ibdataファイルには大きすぎますか?


9

私のibdataファイルは非常に大きく、少なくとも私には非常に大きいようです。これは過大ですか?

-rw-rw---- 1 mysql mysql  15G Apr 18 10:11 ibdata1

4
ibdataファイルが非常に小さいです。
ジェフファーランド

そのファイルを小さなチャンク(4Gなど)に分割すると、パフォーマンスが向上するか低下するか?
なちと2012

回答:


13

これが問題になる場合

show table statusテーブルで実行していて、Data_freeフィールドがibdata1ファイルサイズの大部分を占めている場合は、多くの無駄なスペースがある可能性があります。大量の挿入/削除が問題になります。これが当てはまり、一時的な挿入と削除がデータの大部分を占めている場合は、テーブルごとのファイルに適切なケースがあります。

ただし、これは自動的な「はい」ではありません。InnoDBファイル内の内部断片化については世界中で多くの話がありますが、ファイルごとのファイルとしてファイルシステムに配置すると、断片化がデータベースレベルではなくファイルシステムレベルに移動します。

通常これが問題ではない理由

InnoDBファイルは、ファイルではなくファイルシステムと考えてください。多くのファイルがある場合は、大きなファイルシステムが必要になります。

ほとんどの場合、ファイルシステムはテラバイト単位のデータと数えきれないほどの数のファイルを処理するためのスケールアップに非常に適しています。インデックス作成が不十分な問題(パフォーマンスに影響が出る前のディレクトリ内のファイル数の制限など)に遭遇することもありますが、最新のファイルシステムは、ほとんどの場合、テラバイトの範囲にうまく移行できます。

InnoDBは同じように機能します。データファイルのサイズは非常に大きくなる可能性があります。また、大きなファイルシステムと同様に、データのバックアップで問題が発生する可能性があります。ただし、ファイルシステムを複数のパーティションに分割しても問題が解決しないのと同様に、innodbを操作することもできません。innodb_file_per_tableを使用できますが、お勧めすることはほとんどありません。

あなたのファイルシステムと同じように、より良い答えは、内部で制限を知り、その中で機能することです。インデックスを理解し、適切に適用します。InnoDBを分割しようとしないでください。それは、そのためのものではありません。

私は建設的にコンセプトを伝えるのに苦労しているので、ここでは言葉がこれよりも優れていることを簡単に読みます。テラバイトはビッグデータではなく、ペタバイトはです。

お客様が数テラバイトのデータウェアハウスを実行していた本当に古いMySQLマーケティングスライドを覚えています。何年も前に。InnoDBまたはMyISAMのどちらでも機能します。これは、標準的なMySQLのものです。

15GBのデータベースを心配する必要はありません。


使用率が50%未満のようです。InnoDB free: 7364608 kB
なちと2012

@nachito大丈夫だと思います。ファイルシステム用のスペースが必要だと思われる場合は、再利用してください。パフォーマンスだけが心配な場合は、心配しないでください。また、パフォーマンスについては、データベースファイルを独自のパーティションに保持することをお勧めします。そのため、パフォーマンスに重点を置いている場合は、とにかく使用可能な再利用はありません。
ジェフファーランド2012

6

ibdataファイルは縮小されません-最近いくつかのテーブルを削除したり、多数の行を削除したりした場合-構成内のinnodbはファイルシステムに空き領域を解放しません。私はあなたをお勧めします:

  • たとえばmysqldumpを使用して、すべてのデータをバックアップします
  • my.cnfに追加しますinnodb_file_per_tableディレクティブ
  • mysqlを再起動します
  • innodbエンジンを使用してすべてのデータベースを削除する
  • mysqlを停止する
  • ibdataファイルを削除する
  • rm ib_logfile [01]
  • mysqlを起動し、すべて問題ない場合はsyslogを確認します
  • ダンプをリロード

このようにして、innodbテーブル/データベースをドロップするたびにスペースを取り戻すことができます。関連するIDBファイルはすぐに削除されます。


テーブルのダンプとリロードを行わなくても縮小されないことを理解しています。ただし、InnoDBデータベースを削除した場合、再び大きくなる前にその「空き」スペースを使用しますか?
なちと2012

1
@nachitoはい、そうです。
ジェフファーランド


あなたの答えは、私の答えが行ったように問題を曇らせることなく、単純明快な提案です。+1 !!!
RolandoMySQLDBA 2012

1
さて、答えはデータファイルが使用するスペースを削減するための解決策ですが、それはそれに関連するメリットの説明ではなく、それは私が読んだときの問題です。15GBのibdataファイルは重要ですか?
ジェフファーランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.