- ベストアンサー
MySQLでデータベースを一つのファイルにひたすら保存していいのか
MySQLでデータベースを一つのファイルにひたすら保存していいのか PHPでMySQLを使用しています。 データベースを作る時は以前から二つの方法を使っています。 ・データベースファイルを一定のデータ量になると分割する方法 ・データベースファイルを分割せず一つのファイルにひたすら保存していく方法 これはどっちがいいのでしょうか? 一つのデータベースファイルに保存し続けるとユーザーがアクセスする際は そのデータベースファイルにしかアクセスしないので共有ロックの関係で ユーザーが増えるほど分割した場合に比べてオープンが低速化したりしないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「ひたすら」がどの程度の件数を指しているかにもよりますが、適切に(必要充分に)インデックスがはられたテーブルなら、億のオーダーぐらいまでは平気ですよ。億に届くようなら、RANGEパーティショニング(バージョン5.1で追加された機能)で、データをパーティションごとに分割してしまえば、さらに多くの行を格納することが出来ます。 ちなみに、InnoDBをストレージエンジンとして利用した場合、デフォルトではデータファイルはひとつです。(そのファイルの中に、複数のテーブルのデータが格納されます。)データファイルはひとつですが、特にロックが発生して遅くなるということはありません。
その他の回答 (2)
ANo.1で回答した者です。お礼メッセージをありがとうございます。 SQLiteの場合ですが、複数ファイルに分けても、あるファイルにアクセスが集中しないと言うだけで、負荷分散にはなりません。 MySQLの場合、まず、レプリケーションという機能があります。レプリケーションで負荷分散させるためには、アプリケーション側で負荷分散するようなコードを書いてやらなければなりません。 MySQL Clusterであれば、MySQLレベルでの負荷分散が可能になります。
ユーザーが増えれば増えるほどRDBMSに待ち行列が発生しますから、データベースファイルを複数に分けても解決策にはなりません。
お礼
ということは一つに分けても複数に分けてもパフォーマンスに差は無いということでしょうか? これはMySQLだけでなくてSQLiteなどでも同じことでしょうか?