MySQLデータ削除後のディスク領域の解放概要
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操作を実行します.
スペース最適化文の実行:
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古いテーブル名になると、データ量が多くなります.
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である.
7.3なぜ時計をロックするのですか?
alterプロセスでは、古いテーブルから新しいテーブルにデータがコピーされ続けます.この時、古いテーブルがdeleteにデータされた場合、古いテーブルと新しいテーブルのデータは一致しません.最後にrename新しいテーブルto古いテーブル名になると、データ量が多くなります.