1. 對(duì)表進(jìn)行優(yōu)化 ( 優(yōu)化表主要作用是消除刪除或者更新造成的空間浪費(fèi))
2. 對(duì)表進(jìn)行分析(分析關(guān)鍵字的分布, 分析并存儲(chǔ)MyISAM和BDB表中鍵的分布)
3. 對(duì)表進(jìn)行檢查(檢查表的錯(cuò)誤,并且為MyISAM更新鍵的統(tǒng)計(jì)內(nèi)容)
4. 對(duì)表進(jìn)行修復(fù)(修復(fù)被破壞的MyISAM表)
分析表
ANALYZE TABLE 表名1 [,表名2…] ;
ANALYZE TABLE分析表的過(guò)程中,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)對(duì)表加一個(gè)只讀鎖。在分析期間,只能讀取表中的記錄,不能更新和插入記錄。ANALYZE TABLE語(yǔ)句能夠分析InnoDB和MyISAM類型的表。
對(duì)表的定期分析可以改善性能,且應(yīng)該成為常規(guī)維護(hù)工作的一部分。因?yàn)橥ㄟ^(guò)更新表的索引信息對(duì)表進(jìn)行分析,可改善數(shù)據(jù)庫(kù)性能。
檢查表
MySQL中使用CHECK TABLE語(yǔ)句來(lái)檢查表。CHECK TABLE語(yǔ)句能夠檢查InnoDB和MyISAM類型的表是否存在錯(cuò)誤。還可以檢查視圖是否存在錯(cuò)誤.
check table 表名
優(yōu)化表
隨著MySQL的使用,包括BLOB和VARCHAR字節(jié)的表將變得比較繁冗,因?yàn)檫@些字段長(zhǎng)度不同,對(duì)記錄進(jìn)行插入、更新或刪除時(shí),會(huì)占有不同大小的空間,記錄就會(huì)變成碎片,且留下空閑的空間。像具有碎片的磁盤,會(huì)降低性能,需要整理,因此要優(yōu)化。 (個(gè)人理解:當(dāng)刪除數(shù)據(jù)之后,原來(lái)的索引文件位置會(huì)空出來(lái)。等待新文件的插入,optimize命令就是整理索引文件)
針對(duì)MyISAM表,直接使用如下命令進(jìn)行優(yōu)化
optimize table table1[,table2][,table3]
myisam
innodb
Table does not support optimize, doing recreate + analyze instead。因?yàn)镮nnodb結(jié)構(gòu)下刪除了大量的行,此時(shí)索引會(huì)重組并且會(huì)釋放相應(yīng)的空間因此不必優(yōu)化。
show table status like ‘表名’;