2016-12-28 45 views

回答

0

記住MySQL的時間OPTIMIZE TABLE期間鎖定表運行

對於從官方文檔你的MySQL版本:

OPTIMIZE TABLE應該被使用,如果你刪除了很大一部分 表,或者如果您對具有可變長度 行(具有VARCHAR,VARBINARY,BLOB或TEXT列的表)的表進行了許多更改。 刪除的行保留在鏈接列表中,隨後的INSERT操作將重新使用舊的行位置。你可以使用OPTIMIZE TABLE來 回收未使用的空間,並整理數據文件

其他注意事項InnoDB的:

對於InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE,這 重建表來更新索引統計信息並在 聚簇索引中釋放未使用的空間。從MySQL 5.1.27開始,這顯示在 OPTIMIZE TABLE的輸出,當你在一個InnoDB表運行它,因爲 如下所示:

的mysql> OPTIMIZE TABLE FOO; 表不支持優化,做重新創建+分析代替

所以:

OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE 
    tbl_name [, tbl_name] ... 

默認情況下,OPTIMIZE TABLE語句被寫入二進制日誌,以便 ,他們將被複制到複製奴隸。日誌記錄可以使用可選的NO_WRITE_TO_BINLOG關鍵字或其別名 LOCAL來抑制 。

相關問題