-innodb_file_per_table
は、1つのテーブルを1つのファイルに保存するか、複数のファイルに分割するかを決定します。
ここに、それぞれのアプローチのいくつかの賛否両論があります(必ずしも完全なリストである必要はありません)。一般的に
Single file per table Multiple files per (partitioned) table
-------------------------------------- --------------------------------------
+ System uses less filehandles - System uses more filehandles
+ One one fsync per second per table - Possibly many more fsync calls (bottleneck)
(less fs overhead (journal etc)) (more fs overhead)
+ Single file uses less space overall - Much larger disk space usage
- Single file fragments badly + Less fragmentation
- Optimize table (et al) takes longer + You can choose to optimize just one file
- One file = one filesystem + You can put heavy traffic files on a fast fs
(e.g. on a solid state disk)
- Impossible to reclaim disk space + possible to emergency-reclaim disk space
in a hurry (truncate table takes long) fast (just delete a file)
- ALTER TABLE can use large % of disk- + rebuilding with ALTER TABLE will use less
space for temp tables while rebuilding temp disk space
私はは、複数のファイルをお勧めしません。
作業負荷が重いフラグメンテーションにつながる場合は、とoptimize table
が長すぎます。複数のファイルを使用すると意味があります。
スペース
を再生一部の人々はInnoDBのテーブルファイルで、常に成長し、決して縮小し、行が削除された場合に無駄なスペースにつながっているという事実についての大騒ぎをたくさん作る。忘れます
次に、空きディスク容量が足りなくなるようにそのスペースを再利用するためのスキームが用意されています。 (truncate table x
)。
これは複数のファイルではるかに高速に動作しますが、データベースはほとんど常に大きくなり、(ほとんど)収縮しないので、このすべてはナンセンスです。したがって、スペースを再利用するとテーブルに多くの時間(CPUとIO)完全にロックされます(読み取りと書き込みは許可されません)。
次回のデータ追加後に、90%のフルディスク(再生後50%)が99%いっぱいになることがわかります。用心ALTER TABLEを使用している場合
は、しかし...
は、次のシナリオを検討:
を - ディスクが60%いっぱいです。
- データベースが50%、他のファイルが10%を占めます。
テーブル上にalter table
を実行すると、1つのファイルにすべてのテーブルがある場合、ディスク領域が不足します。
複数のファイルに保存している場合は、問題がないはずです(待機中のカフェインの過剰摂取を除く)。
あなたは少なくともあなたのテーブルがどれくらい大きいのか、そしてデータベースのテーブルの数を言うことができますか?データベースの合計サイズ? – bas