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

MyISAM 啟動選項與系統變量全解析:自動恢復、延遲寫入與緩衝區配置

     編輯:MySQL 資料庫相關知識

啟動選項

1. --myisam-recover=mode

設定 MyISAM 表崩潰後的自動恢復模式。啟用後,當服務器打開表時若檢測到表標記為崩潰、或打開計數器非零且運行在 --skip-external-locking 模式,將自動執行:檢查表 → 快速修復(排序索引) → 若因數據錯誤失敗則重建數據文件 → 仍失敗則嘗試舊式逐行修復。若指定 FORCE 選項,即使無法恢復所有行也會強制修復並記錄警告;若包含 BACKUP,修復前會建立 tbl_name-datetime.BAK 備份文件,建議配合 cron 腳本定期移至備份介質。

2. --delay-key-write=ALL

對所有 MyISAM 表的寫操作延遲刷新鍵緩衝區至磁碟,可提升寫入效能。警告: 啟用時切勿讓其他程式(如另一 MySQL 實例或 myisamchk)同時操作該表,否則會導致索引損壞。--external-locking 無法解決此問題。

關鍵系統變量

  • bulk_insert_buffer_size:批量插入優化使用的樹緩衝區大小(每線程限制)。
  • myisam_max_sort_file_size:若臨時文件超過此大小(位元組),不使用快速排序索引法建立索引。
  • myisam_sort_buffer_size:修復表時使用的緩衝區大小。
  • myisam_max_extra_sort_file_size:已廢棄,不再使用。

自動恢復流程詳解

  1. 服務器檢查表是否標記為崩潰或打開計數異常。
  2. 執行表檢查。
  3. 嘗試快速修復(僅排序索引,不重建數據文件)。
  4. 若因數據文件錯誤(如重複鍵)失敗,重建數據文件再試。
  5. 仍失敗則採用舊式修復(逐行寫入,不排序),此法幾乎能修復所有錯誤且佔用磁碟空間極小。

若恢復不完全且未指定 FORCE,自動修復終止並記錄錯誤;指定 FORCE 則記錄警告並繼續。

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