top
Loading...
5.9.6.建立表維護計劃
5.9.6. 建立表維護計劃

定期對表進行檢查而非等到問題出現后再檢查數據庫表是一個好主意。檢查和修復MyISAM表的一個方式是使用CHECK TABLEREPAIR TABLE語句。參見13.5.2.3節,“CHECK TABLE語法”和13.5.2.6節,“REPAIR TABLE語法”。

檢查表的另一個方法是使用myisamchk。為維護目的,可以使用myisamchk -s檢查表。-s選項(簡稱--silent)使myisamchk以沉默模式運行,只有當錯誤出現時才打印消息。

在服務器啟動時檢查表是一個好主意。例如,無論何時機器在更新當中重新啟動了,你通常需要檢查所有可能受影響的表。(即“預期的破壞了的表”)。要想自動檢查MyISAM表,用--myisam-recover選項啟動服務器。

一個更好的測試將是檢查最后修改時間比.pid文件新的表。

你還應該在正常系統操作期間定期檢查表。在MySQL AB,我們運行一個cron任務,每周一次檢查所有重要的表,使用crontab文件中這樣的行:

35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI

可以打印損壞的表的信息,以便我們在需要時能夠檢驗并且修復它們。

多年了我們還沒有發現(的確是真的)都沒有任何意外損壞的表時(由于除硬件故障外的其它原因造成損壞的表),每周一次對我們是足夠了。

我們建議現在開始,你對所有最后24小時內被更新了的表每晚都執行myisamchk -s,直到你變得象我們那樣信任MySQL

一般情況,MySQL表很少需要維護。如果你用動態大小的行更改MyISAM(VARCHARBLOBTEXT列的表)或有刪除了許多行的表,你可能想要不時地(每月一次)整理/組合表的空間。

可以對有問題的表執行OPTIMIZE TABLE來優化。或者是,如果可以停一會mysqld服務器,進入數據目錄,當服務器停止時使用該命令:

shell> myisamchk -r -s --sort-index -O sort_buffer_size=16M */*.MYI

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html
北斗有巢氏 有巢氏北斗