首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 參數詳解:skip-external-locking 避免性能損耗

     編輯:MySQL 綜合教學

MySQL 參數詳解:skip-external-locking 避免性能損耗

skip-external-locking(舊版 skip-locking)用於禁用 MyISAM 表的外部文件鎖,單機部署必開,多機共享數據目錄才需關閉。

背景原理

  • External Locking: 多進程訪問同一 MyISAM 表時,通過文件系統鎖協調。每次訪問需等待鎖釋放,單機場景下純屬開銷。
  • skip-external-locking: 告訴 MySQL 不使用文件鎖,由 MySQL 內部表鎖機制協調,消除系統調用開銷,提升性能。

適用場景判斷

部署架構建議設置理由
單機單實例(絕大多數)skip-external-locking(默認開啟)無外部進程競爭,內部鎖足夠
多實例共享同一數據目錄(極罕見、不推薦)註釋掉該行(啟用 external-locking)需文件鎖防止跨實例數據損壞
集群/備份工具需直讀文件操作前執行 FLUSH TABLES WITH READ LOCK 或停服務避免備份時數據不一致

配置方法

# my.cnf [mysqld] 區段
skip-external-locking  # 推薦寫法(MySQL 4.0+)

# 舊版寫法(會報警告)
# skip-locking  -- [Warning] '--skip-locking' is deprecated...

配合 myisamchk 使用注意

啟用 skip-external-locking 後,若需離線運行 myisamchk 檢查/修復/優化表:

  1. 停止 MySQL 服務,或
  2. 執行 mysqladmin flush-tables 關閉所有表並刷新緩存,確保無活躍連接操作該表。

否則可能導致表損壞。

本參數總結

  • 單機生產環境**必須開啟**(默認即開)。
  • 舊版 skip-locking 已棄用,統一改為 skip-external-locking。
  • 配合 FLUSH TABLES 可安全進行離線維護。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved