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

MySQL 外部鎖定(檔案級鎖)機制:skip-locking 參數、myisamchk 配合協議、Linux 預設關閉

     編輯:MySQL 綜合教學

前言

外部鎖定(External Locking / 檔案級鎖)讓 MySQL 伺服器與外部工具(myisamchk、isamchk)協作存取表檔案。本文說明 skip-locking 參數控制、兩種運行模式下的操作協議與 Linux 預設關閉原因。

外部鎖定啟用狀態檢查

mysqladmin variables | grep skip_locking
  • skip_locking = OFF → 外部鎖定啟用。
  • skip_locking = ON → 外部鎖定禁用(Linux 預設)。

兩種模式操作協議

模式 1:外部鎖定啟用

  1. 執行 mysqladmin flush-tables 刷新快取、關閉表檔案。
  2. 運行 myisamchk 檢查/修復,伺服器與工具透過檔案鎖協作。
  3. 修復需使用「修復鎖定協議」(獨佔鎖)。

模式 2:外部鎖定禁用(Linux 預設)

  1. 最佳做法:關閉 MySQL 伺服器 後再運行 myisamchk。
  2. 若堅持不關閉:必須確保無任何客戶端存取該表。
  3. 使用內部鎖定協議(LOCK TABLES ... WRITE)鎖定表,再運行工具。

為何 Linux 預設關閉?

  • 檔案系統(NFS、某些本地 FS)檔案鎖實作不可靠。
  • 避免鎖競爭導致伺服器卡死。
  • 現代維護流程偏好「停機維護」或「線上備份/複製後離線檢查」。

實務建議

  • 生產環境勿依賴外部鎖定,採用 mysqldump、Percona XtraBackup 線上備份。
  • 離線修復務必停機,或複製檔案到測試機修復後再換回。
  • 若必須線上 myisamchk,使用 LOCK TABLES 內部鎖定並嚴格控制存取。

相關延伸閱讀

  • MySQL 多表刪除實現
  • 依據 MySQL 表備份
  • MySQL SHOW 指令用法介紹
  • MySQL 清空表實現方法
  • 查看 MySQL 表結構指令
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved