私は既存のMySQLデータベースをとり、新しいホストにコピーを設定しました。2つのmysqlファイル(同じテーブル、同じ内容)のサイズが異なるのはなぜですか?
新しいホスト上のいくつかのテーブルのファイルサイズは、古いホスト上の対応するファイルよりも1〜3%小さくなります。
私はそれがなぜ好奇心です。
私の推測では、古いホストのファイルは時間が経つにつれて成長し、そのファイルのBツリー構造内にはさらに断片化があります。新しいホストは、バイナリログを使用してファイルを最初から作成していたため、そのような断片化は回避されました。
bツリー構造自体にフラグメンテーションが存在することは意味がありますか? (私はもともと "いいえ"と思っていましたが、データベースファイルを圧縮するというDBAの作業の基礎となる断片化ではありませんでしたか?
これは単なるファイルシステムレイヤーのアーティファクトなのかなと思います。つまり、新しいホストには空のディスクドライブがほとんど存在するため、断片化が少なくなると新しいファイルが割り当てられます。その後、報告されたファイルサイズに断片化が現れるとは思わなかった(Linux OS)。