我正在使用MySQL Server-5.1.58社區日誌。問題是在刪除數據後,MySQL數據庫的分配空間沒有變得免費,因此我日常使用的數據庫的備份大小不斷增加。刪除數據後,有什麼工具可用於釋放MySQL數據庫中分配的空間?
請讓我知道任何可以解決問題的工具。
我正在使用MySQL Server-5.1.58社區日誌。問題是在刪除數據後,MySQL數據庫的分配空間沒有變得免費,因此我日常使用的數據庫的備份大小不斷增加。刪除數據後,有什麼工具可用於釋放MySQL數據庫中分配的空間?
請讓我知道任何可以解決問題的工具。
記住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來抑制 。