首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL myisamchk 工具使用手冊(上):檢查、修復與優化

     編輯:MySQL 資料庫相關知識

1. 調用方式

myisamchk [options] tbl_name ...
# 檢查目錄下所有表
myisamchk *.MYI
# 推薦:快速靜默檢查所有 MyISAM 表
myisamchk --silent --fast /path/to/datadir/*/*.MYI

執行時確保無其他程式使用該表。記憶體用 -O sort=16M 通常足夠,修復需雙倍硬碟空間。

2. 一般選項

  • --debug/-#:輸出除錯日誌
  • --silent/-s:靜默模式,僅錯誤輸出
  • --wait/-w:表被鎖定時等待而非報錯
  • --var_name=value:設定變數(key_buffer_size、sort_buffer_size 建議設為可用記憶體 25% 以加速修復)

3. 檢查選項

  • --check/-c:檢查錯誤(預設)
  • --check-only-changed/-C:僅檢查上次檢查後有變更的表
  • --extend-check/-e:詳細檢查,多索引時較慢
  • --fast/-F:僅檢查未正確關閉的表
  • --force/-f:發現錯誤自動修復
  • --information/-i:輸出統計資訊
  • --medium-check/-m:較快檢查,發現 99.99% 錯誤
  • --update-state/-U:記錄檢查時間與崩潰狀態至 .MYI
  • --read-only/-T:不標記已檢查,適合檢查被其他程式使用的表

4. 修復選項

  • --backup/-B:備份 .MYD 為 file_name-time.BAK
  • --correct-checksum:修正校驗和
  • --data-file-length/-D:設定資料檔最大長度
  • --extend-check/-e:嘗試恢復每行,可能產生大量垃圾行,慎用
  • --force/-f:覆蓋舊暫存檔
  • --keys-used/-k:位元值指定更新哪些索引
  • --parallel-recover/-p:多執行緒平行建立所有鍵
  • --quick/-q:不修改資料檔,快速修復
  • --recover/-r:修復幾乎所有問題(首選)
  • --safe-recover/-o:舊式恢復,較慢但能處理 -r 無法處理的情況,硬碟佔用較少
  • --sort-recover/-n:強制透過排序解析鍵值

5. 其他操作

  • --analyze/-a:分析鍵值分布,優化聯結順序
  • --sort-index/-S:索引樹塊由高到低排序,加快搜尋
  • --set-auto-increment/-A:強制自增值起始點
  • --description/-d:輸出表描述資訊

6. 修復流程

  1. 簡單安全修復:myisamchk -r -q tbl_name(快速恢復模式),失敗進階段 3。
  2. 困難修復:索引檔前 16K 損壞或遺失。備份資料檔 → 用表描述建立新空表 → 複製舊資料檔 → 執行 myisamchk -r -q。
  3. 非常困難修復:.frm 描述檔也損壞。從備份恢復 .frm,或在別庫建同結構表複製 .frm/.MYI 過來,再重建索引。

亦可用 REPAIR TABLE tbl_name USE_FRM 自動完成全流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved