1
0
私は既存のMySQLデータベースを使用して、新しいホストにコピーを設定しました。
新しいホスト上のいくつかのテーブルのファイルサイズは、古いホスト上の対応するファイルより1〜3%小さくなります。
それがなぜなのか私は興味があります。
私の推測では、古いホストのファイルは時間の経過とともに大きくなり、そのファイルのBツリー構造の中では、さらに細分化されています。 新しいホストは、ファイルを最初から(バイナリログを介して)作成していたので、そのような断片化を避けました。
Bツリー構造自体の中に断片化があることも意味がありますか? (OSファイルシステム層ではなく、データベース層内で話す)私はもともと「いいえ」と考えましたが、その場合も、データベースファイルを圧縮するDBAタスクの基本はそうではありませんか。
これが単にファイルシステム層のアーティファクトであるのではないかと思います。 すなわち 新しいホストにはほとんど空のディスクドライブがあるため、断片化が少なくなると新しいファイルが割り当てられます。 また、報告されたファイルサイズに断片化が現れるとは思わなかった(Linux OS)。
2 Answer
2
私はmysqlを理解していることからそれはそれが容量に近づくにつれて、成長のアルゴを持っている、それがマウントされているときそれは別のサイズを選択し、余分な記憶域をトリミングする
2
MySQLのデータファイルやインデックスファイルには断片化があることは確かです。 これは_deliberate_でも一般的です。
つまり、ストレージエンジンは意図的にあちこちに余分なスペースをあけることがあるので、値を変更すると、データファイル全体を並べ替えることなく行を収めることができます。 このスロップスペースをどれだけ割り当てるかを構成するために使用できるサーバープロパティもあります。
ファイルの不一致が1〜3%であっても、私は点滅しません。