定期執行資料表檢查,而不是等到問題發生才處理,這是一個好習慣。檢查和修復 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