定期執行資料表檢查是個好主意,而不是等到問題發生才檢查。檢查和修復 MyISAM
資料表的一種方法是使用 CHECK TABLE
和 REPAIR TABLE
陳述式。請參閱 第 15.7.3 節,「資料表維護陳述式」。
檢查資料表的另一種方法是使用 myisamchk。為了維護目的,您可以使用 myisamchk -s。-s
選項(--silent
的簡寫)會導致 myisamchk 以靜音模式執行,僅在發生錯誤時才列印訊息。
啟用自動 MyISAM
資料表檢查也是個好主意。例如,每當機器在更新過程中重新啟動時,您通常需要在使用之前檢查每個可能受到影響的資料表。(這些是「預期的損毀資料表」。)若要讓伺服器自動檢查 MyISAM
資料表,請啟動伺服器並設定 myisam_recover_options
系統變數。請參閱 第 7.1.8 節,「伺服器系統變數」。
您也應該在正常系統操作期間定期檢查資料表。例如,您可以使用 cron 工作每週檢查一次重要的資料表,在 crontab
檔案中使用類似這樣的行
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
這會列印出有關損毀資料表的資訊,以便您可以檢查並根據需要進行修復。
首先,每天晚上在過去 24 小時內更新的所有資料表上執行 myisamchk -s。當您發現問題不常發生時,可以將檢查頻率降低到每週一次左右。
通常,MySQL 資料表不需要太多維護。如果您對具有動態大小列的 MyISAM
資料表(具有 VARCHAR
、BLOB
或 TEXT
資料行的資料表)執行許多更新,或者有許多已刪除列的資料表,您可能需要不時對資料表進行重組/回收空間。您可以使用資料表上的 OPTIMIZE TABLE
來執行此操作。或者,如果您可以暫時停止 mysqld 伺服器,請變更位置到資料目錄,並在伺服器停止時使用此命令
$> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI