2009-05-29 9 views
1

私は既存のMySQLデータベースをとり、新しいホストにコピーを設定しました。2つのmysqlファイル(同じテーブル、同じ内容)のサイズが異なるのはなぜですか?

新しいホスト上のいくつかのテーブルのファイルサイズは、古いホスト上の対応するファイルよりも1〜3%小さくなります。

私はそれがなぜ好奇心です。

私の推測では、古いホストのファイルは時間が経つにつれて成長し、そのファイルのBツリー構造内にはさらに断片化があります。新しいホストは、バイナリログを使用してファイルを最初から作成していたため、そのような断片化は回避されました。

bツリー構造自体にフラグメンテーションが存在することは意味がありますか? (私はもともと "いいえ"と思っていましたが、データベースファイルを圧縮するというDBAの作業の基礎となる断片化ではありませんでしたか?

これは単なるファイルシステムレイヤーのアーティファクトなのかなと思います。つまり、新しいホストには空のディスクドライブがほとんど存在するため、断片化が少なくなると新しいファイルが割り当てられます。その後、報告されたファイルサイズに断片化が現れるとは思わなかった(Linux OS)。

答えて

2

確かにMySQLのデータファイルやインデックスファイルの断片化が存在することができ過剰ストレージトリミング、異なるサイズを選んだマウントされたときに、容量に近づくように、それは成長ALGOを持っている私は、MySQLの理解。これは一般的であり、も慎重にです。

つまり、ストレージエンジンは意図的に余分なスペースを残すことがあります。値を変更すると、データファイル全体を並べ替える必要がなくなります。このスロープスペースのどれくらいを割り当てるかを設定するために使用できるサーバープロパティーもあります。

1〜3%のファイルの不一致で私は瞬きもしません。

2

から、それはそれはprolly

関連する問題