本文實(shí)例講述了MySQL實(shí)現(xiàn)MYISAM表批量壓縮的方法。分享給大家供大家參考,具體如下:
關(guān)于對(duì)MYISAM表的壓縮,可以使用myisampack和myisamchk完成(myisampack完之后必須進(jìn)行myisamchk才能使用壓縮后的表,而且是只讀的), 其詳細(xì)地用法可以參考官方文檔:
http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html。
這兩個(gè)操作需要謹(jǐn)慎使用,在壓縮之前需要確認(rèn)mysqld已關(guān)閉或者要壓縮的表不會(huì)有其他的sql操作;而且壓縮過(guò)程會(huì)很占用cpu資源,建議在服務(wù)器空閑的狀態(tài)進(jìn)行。
下面是用于實(shí)現(xiàn)某數(shù)據(jù)庫(kù)下表壓縮的shell過(guò)程(值得注意的是,如果數(shù)據(jù)量大,建議分多次操作,因其會(huì)很耗時(shí)):
#!/bin/bashdata_dir="/data/mysql/my_dbname/"filelist=`ls $data_dir`echo "MYISAMPACK BEGIN."for filename in $filelistdo idx=`expr match "$filename" ".*.MYI"` if [[ $idx>0 ]] then /usr/bin/myisampack $data_dir$filename fidoneecho "MYISAMPACK End. MYISAMCHK BEGIN."for filename in $filelistdo idx=`expr match "$filename" ".*.MYI"` if [[ $idx>0 ]] then /usr/bin/myisamchk -r -o -f --sort-index --analyze $data_dir$filename fidoneecho "MYISAMCHK END."