MySQL Deleteデータを削除した後、ディスク空間が解放されなかった理由


問題の説明
MySQLでdelete文を使ってデータを削除した後、モニタビューで使用可能なディスク空間が増加していません。ディスクの使用率が低下していません。
ソリューション
deleteが解放されない空間はMySQL自身のメカニズムの原因であり、再構成テーブルが必要であればディスク空間を解放することができ、参照できる操作:
  • 実行optimizeテーブル$name
  • InnoDBの表であれば、alter table$name engine=innodb。
  • 次の二つの問題に注意してください。
    この二つのコマンドは表を再構築します。ディスクの空間が緊張している時には操作しないでください。ディスクを拡張して、操作が終わったら縮みます。
    この2つのコマンドは、開始時と終了時にmetadata lockを取得しようとしますので、ラッシュ時には実行しないようにしてください。
    問題の分析
    MySQLの仕組みでは、delete削除された行は削除状態としてマークされているだけで、削除された行が多い場合、全体のデータページ(innodb_)page)の行はいずれも削除されますが、データページも削除としてマークされます。本当の物理削除ではなく、ずっと占有して、多重されるのを待ちます。
    たとえば:

    deleteの前後が見られます。data_lengthは変わっていませんが、data_freeがたくさん増えました。これはデータが削除されたが、リリースされていなくても、test 1テーブルに占有されていて、free状態にあることを表示しているだけで、後で新しいデータを書き込むときに直接多重することができ、新しいディスク空間を申請する必要がなくなります。
    この時はalter table test1 engine = innodbを使って効果を見てみます。

    data_が見られますlengthとdata_freeは全部空の時計の状態になりました。一つのinnodbだけです。page(デフォルト16 k)。
    PS:data_free自体は、テーブルの空間の破片を評価するためにも利用できます。この数字が非常に高い場合、テーブルを同じ方法で再構築し、ディスクの一部を回収することが考えられます。
    以上はMySQL Deleteがデータを削除した後にディスクの空間の釈放していない原因の詳しい内容で、もっと多いのはMySQLがデータを削除した後にディスクの空間の釈放していない資料に関して私達のその他の関連している文章に注意して下さい!