mysql中OPTIMIZE TABLE的作用及使用
2019-05-01 00:20:53
16082
1、刪除了表的一大部分;
2、已經(jīng)對(duì)含有可變長(zhǎng)度行的表(含有VARCHAR, BLOB或TEXT列的表)進(jìn)行了很多更改。
--------------------------------------------------------------------------------------------
作用:
利用未使用的空間,釋放出來(lái),并整理數(shù)據(jù)文件的碎片。
--------------------------------------------------------------------------------------------
頻率:
不需要經(jīng)常運(yùn)行,每周一次或每月一次。
--------------------------------------------------------------------------------------------
適用范圍:
OPTIMIZE TABLE只對(duì)MyISAM, BDB和InnoDB表起作用。
--------------------------------------------------------------------------------------------
注意事項(xiàng):
1、在OPTIMIZE TABLE運(yùn)行過(guò)程中,MySQL會(huì)鎖定表。如果涉及海量的數(shù)據(jù)表,應(yīng)該考慮使用一些運(yùn)維手段避免現(xiàn)網(wǎng)的服務(wù)受到影響。
2、使用alter table table_name engine=innodb也可以同樣達(dá)到釋放空洞的效果。這是由于在轉(zhuǎn)換數(shù)據(jù)引擎(即便沒有真正轉(zhuǎn)換)的時(shí)候,mysql也會(huì)將表中的數(shù)據(jù)讀取出來(lái),再重新寫入,在這個(gè)過(guò)程中,空洞自然就沒有了。