如何快速REPAIR TABLE


早上到公司,剛准備吃早餐,手機響了,一看是服務器自動重啟了。好吧,准備修復數據吧。游戲服的游戲日志使用的是MyISAM。眾所周知,MyISAM表在服務器意外宕機或者mysqld進程掛掉以后,MyISAM表會損壞,數據小的話修復還比較快,但是數據如果有10G以上,那就悲劇了。那我們如何加快repair table快速高效執行呢?下面我們來看看解決方法。

REPAIR TABLE用於修復被破壞的表。默認情況下,REPAIR TABLE與myisamchk --recover tbl_name具有相同的效果。REPAIR TABLE對MyISAM和ARCHIVE表起作用。

通過修改相關參數,提高repair table的效率:

[mysqld]
myisam_sort_buffer_size=1G
key_buffer_size=1G
myisam_max_sort_file_size=100G

myisam_sort_buffer_size      

在REPAIR TABLE過程中,或通過CREATE INDEX/ALTER TABLE為MyISAM表添加索引時為了對索引排序所能夠使用的緩沖空間大小。最小值為4,32位系統上所能夠使用的最大值為4294967295,即4G;64位系統上可以使用更大的空間。作用范圍為全局或會話級別,可用於配置文件,屬動態變量。

myisam_max_sort_file_size   

設定在MySQL在使用REPARE TABLE、ALTER TABLE或LOAD DATA INFILE命令時為MyISAM表重新創建索引所能夠使用的臨時文件的體積上限,單位是字節。如果臨時文件的大小大過了此上限值,則mysqld會使用key cache創建索引。默認值是2G,而如果MyISAM索引文件本身大過此值且其所在的文件系統有足夠的空閑空間,增大此值會提升MySQL性能。作用范圍為全局級別,可用於配置文件,屬動態變量。

 

參考資料:

http://dev.mysql.com/doc/refman/5.5/en/repair-table-speed.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM