前提:
1、刪除了表的一大部分;
2、已經對含有可變長度行的表(含有VARCHAR, BLOB或TEXT列的表)進行了很多更改。
--------------------------------------------------------------------------------------------
作用:
利用未使用的空間,釋放出來,並整理數據文件的碎片。
--------------------------------------------------------------------------------------------
頻率:
不需要經常運行,每周一次或每月一次。
--------------------------------------------------------------------------------------------
試用范圍:
OPTIMIZE TABLE只對MyISAM, BDB和InnoDB表起作用。
--------------------------------------------------------------------------------------------
注意事項:
1、在OPTIMIZE TABLE運行過程中,MySQL會鎖定表。如果涉及海量的數據表,應該考慮使用一些運維手段避免現網的服務受到影響。
2、使用alter table table_name engine=innodb也可以同樣達到釋放空洞的效果。這是由於在轉換數據引擎(即便沒有真正轉換)的時候,mysql也會將表中的數據讀取出來,再重新寫入,在這個過程中,空洞自然就沒有了。
--------------------------------------------------------------------------------------------
參考資料:
mysql中OPTIMIZE TABLE的作用
http://blog.sina.com.cn/s/blog_3dbab2840100c13p.html