私のibdataファイルは非常に大きく、少なくとも私には非常に大きいようです。これは過大ですか、それとも悪くないですか?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
テーブルでshow table status
を実行し、Data_free
フィールドがibdata1
ファイルのサイズの大部分を占める場合、多くの無駄なスペースが生じる可能性があります。大量の挿入/削除が問題になります。これが当てはまり、一時的な挿入と削除がデータの大部分を占めている場合は、テーブルごとのファイルに適切なケースがあります。
ただし、これは自動的な「はい」ではありません。 InnoDBファイル内の内部断片化については世界中で多くの話題がありますが、ファイルごとのファイルとしてファイルシステムに配置すると、断片化がデータベースレベルではなくファイルシステムレベルに移動します。
InnoDBファイルは、ファイルではなくファイルシステムと考えてください。多くのファイルがある場合、大きなファイルシステムが必要になります。
ほとんどの場合、ファイルシステムはテラバイト単位のデータと数えきれないほどの数のファイルを処理するためのスケールアップに非常に適しています。インデックス作成が不十分な問題(パフォーマンスに影響が出る前のディレクトリ内のファイル数の制限など)に遭遇することもありますが、最新のファイルシステムは、ほとんどの場合、テラバイトの範囲にうまく移行できます。
InnoDBは同じように機能します。データファイルのサイズは非常に大きくなる可能性があります。また、大きなファイルシステムと同様に、データのバックアップで問題が発生する可能性があります。ただし、ファイルシステムを複数のパーティションに分割しても問題が解決しないのと同様に、innodbを操作することもできません。 innodb_file_per_table を使用できますが、お勧めすることはほとんどありません。
あなたのファイルシステムのように、より良い答えは、内部で制限を知って、その中で働くことです。インデックスを理解し、適切に適用します。 InnoDBを分割しようとしてはいけません。それはそのためのものではありません。
私は概念を建設的に伝えるのに苦労しているので、ここでは言葉を私がこれよりも上手に読むことができます: テラバイトはビッグデータではなく、ペタバイトは です。
お客様が数テラバイトのデータウェアハウスを実行していた本当に古いMySQLマーケティングスライドを覚えています。何年も前に。 InnoDBまたはMyISAMのどちらでも機能します。これは、標準的なMySQLのものです。
15GBのデータベースを心配する必要はありません。
ibdataファイルは縮小されません-最近いくつかのテーブルを削除したり、多くの行を削除したりした場合-設定のinnodbはファイルシステムに空き領域を解放しません。私はあなたをお勧めします:
このようにして、innodbテーブル/データベースをドロップするたびにスペースを取り戻すことができます。関連するIDBファイルはすぐに削除されます。