MySQLデータ削除後のディスク領域の解放概要

1440 ワード

1、drop table table_nameはInnodbとMyISAMにかかわらず、ディスク領域をすぐに解放します.
2、truncate table table_nameは、InnodbおよびMyISAMにかかわらず、ディスク領域をすぐに解放します.
truncate tableはdrop tableに似ていて、creat tableに似ていますが、このcreate tableのプロセスは、テーブル構造ファイルの前にすでにあったなど、最適化されています.だから速度はdrop tableに近い速度であるべきだ.
3、delete from table_nameテーブルのすべてのデータを削除すると、MyISAMはすぐにディスク領域を解放し(特別な処理をしたはずで、合理的)、InnoDBはディスク領域を解放しません.
4、delete from table_についてname where xxxの条件付き削除では、innodbでもMyISAMでもディスク領域は解放されません.
5、delete操作後optimize table table_を使用するnameはすぐにディスク領域を解放します.innodbでもmyisamでも.ディスク領域を解放する目的を達成するには、delete以降optimize table操作を実行します.
スペース最適化文の実行:
optimize table  user

6、delete fromテーブル以降はディスク領域は解放されていませんが、次回データを挿入するときは、この領域を使用できます.
7、optimizeが注意しなければならないピットは、ディスクスペースの整理中にクエリー以外の操作を実行することは許されません.
7.1 optimize tableの本質はalter tableである.
  • mysql 5.5の改表過程は以下の
  • である.
  • 1.新しいテンポラリテーブルtmp
  • を作成する
  • 2.古いテーブルをロックし、挿入削除を禁止し、読み書きのみを許可する(これはなぜ上のinsert文がwaiting for table metadata lockにとどまっているのか)
  • 3.古いテーブルから新しいテンポラリテーブルにデータをコピーし続けます(これが上報copy to tmp tableです)
  • 4.等表コピー完了後、瞬間的なrename操作
  • を行う
  • 5.古いテーブルを削除
  • 7.2したがってoptimizeの最大の問題はロックテーブルであり、ロックテーブルはinsert、delete、update文が詰まっているため、最初の結論:optimize tableを使用する際、dml文がないことを確保し、業務が切断されないようにしなければ、事故が発生する可能性がある.
    7.3なぜ時計をロックするのですか?
    alterプロセスでは、古いテーブルから新しいテーブルにデータがコピーされ続けます.この時、古いテーブルがdeleteにデータされた場合、古いテーブルと新しいテーブルのデータは一致しません.最後にrename新しいテーブルto古いテーブル名になると、データ量が多くなります.