當(dāng)對(duì)MySQL進(jìn)行大量的增刪改操作的時(shí)候,很容易產(chǎn)生一些碎片,這些碎片占據(jù)著空間,所以可能會(huì)出現(xiàn)刪除很多數(shù)據(jù)后,數(shù)據(jù)文件大小變化不大的現(xiàn)象。當(dāng)然新插入的數(shù)據(jù)仍然會(huì)利用這些碎片。但過(guò)多的碎片,對(duì)數(shù)據(jù)的插入操作是有一定影響的,此時(shí),我們可以通過(guò)optimize來(lái)對(duì)表的優(yōu)化。
為了更加直觀的看到數(shù)據(jù)碎片,Mysql可以使用如下命令查看
show table status [like table_name]
如下圖
針對(duì)MyISAM表,直接使用如下命令進(jìn)行優(yōu)化
optimize table table1[,table2][,table3]
如果同時(shí)優(yōu)化多個(gè)表可以使用逗號(hào)分隔。
下面優(yōu)化dede_member_vhistory表,可以看出,優(yōu)化后data_free值為0。
我本地是開(kāi)啟了獨(dú)享表空間的。此時(shí)是無(wú)法對(duì)表進(jìn)行optimize操作的,如果操作,會(huì)返回如圖信息,最后的一條Table does not support optimize, doing recreate + analyze instead。因?yàn)樵摻Y(jié)構(gòu)下刪除了大量的行,此時(shí)索引會(huì)重組并且會(huì)釋放相應(yīng)的空間因此不必優(yōu)化。
聯(lián)系客服