単一のデータベース内の複数のテーブルと、個別のデータベース内の複数のテーブルの間に大きなパフォーマンスの違いはないはずです。
MySQLでは、データベース(標準SQLではこのために「スキーマ」という用語を使用します)は、主にテーブルの名前空間として機能します。データベースには、いくつかの属性しかありません。デフォルトの文字セットと照合。そして、そのGRANT
の使用法 データベースごとのアクセス権限を制御するのに便利ですが、それはパフォーマンスとは関係ありません。
単一の接続から任意のデータベースのテーブルにアクセスできます(MySQLサーバーの同じインスタンスによって管理されている場合)。テーブル名を修飾する必要があります:
SELECT * FROM database17.accounts_table;
これは純粋に構文上の違いです。パフォーマンスに影響はありません。
ストレージに関しては、@ Chrisが推測しているように、テーブルをデータベースごとのファイルに整理することはできません。 MyISAMストレージエンジンを使用すると、常にテーブルごとにファイルがあります。 InnoDBストレージエンジンでは、すべてのテーブルを統合する単一のストレージファイルのセットがあるか、テーブルごとにファイルがあります(これは、データベースごとではなく、MySQLサーバー全体に対して構成されます)。いずれの場合も、単一のデータベースにテーブルを作成することと、多くのデータベースにテーブルを作成することには、パフォーマンス上の利点や欠点はありません。
データベースごとに機能するMySQL構成パラメーターは多くありません。サーバーのパフォーマンスに影響を与えるほとんどのパラメーターは、サーバー全体の範囲です。
バックアップに関しては、テーブルのサブセットをmysqldump
への引数として指定できます。 指図。コマンドラインですべてのテーブルに名前を付ける必要なしに、データベースごとにテーブルの論理セットをバックアップする方が便利な場合があります。ただし、パフォーマンスに違いはなく、バックアップコマンドを入力するときに便利なだけです。