MySQL執行命令delete語句時,如果包括where條件,並不會真正的把數據從表中刪除,而是將數據轉換成了碎片,通過下面的命令可以查看表中的碎片數量和索引等信息:
mysql > show table status like 'table_name'
查詢結果中:
Index_length 代表索引的數量
Data_free 代表碎片數量
然后執行下面命令進行優化整理:
mysql > optimize table table_name
如果之前的碎片數量多,執行時間可能會久一點,執行結束后出現下面框內的數據則優化成功。
再通過之前的查看命令來看執行效果:
mysql > show table status like 'table_name'
注意事項:
由於命令optimize會進行鎖表操作,所以進行優化時要避開表數據操作時間,避免影響正常業務的進行。