MySQLのkill
に関するドキュメント 警告 :
警告
MyISAM
テーブルでREPAIR TABLE
またはOPTIMIZE TABLE
操作を強制終了すると、テーブルが破損して使用できなくなります。このようなテーブルの読み取りまたは書き込みは、再度最適化または修復するまで(中断なしで)失敗します。
それはMyISAMのためです。
InnoDBテーブルに対して実行されているOPTIMIZE TABLE
プロセスを強制終了することも危険ですか?
MySQL認定ガイドによると:
OPTIMIZE TABLEステートメントは、MyISAMテーブルを最適化することによってクリーンアップします。これには、削除と更新によって生じた未使用のスペースの再利用、および分割されて不連続に保存されたレコードの結合が含まれます。 OPTIMIZE TABLEはまた、インデックスページが順不同である場合にソートし、インデックス統計を更新します
InnoDBテーブルでも機能しますが、テーブルを再構築するALTER TABLEにマップします。これにより、インデックス統計が更新され、クラスター化インデックスの領域が解放されます。
InnoDBの場合:
InnodbはACIDに準拠しており、最適化テーブルは単にすべてのレコードを新しいテーブルにコピーします
また、実行中にそれを強制終了しようとしても、レコードが失われることはありません。
さらに、innodb_defragment=1
を使用するInnoDBの場合、OPTIMIZE TABLE
はインクリメンタルなので、ROLLBACKは必要ありません。