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

MySQL 表鎖定操作指南:LOCK TABLES 與 UNLOCK TABLES 實戰

     編輯:MySQL 資料庫相關知識

鎖定類型與效果

指令鎖定模式允許操作阻擋操作
LOCK TABLE tbl_name READ共享鎖(讀鎖)SELECTINSERT/UPDATE/DELETE
LOCK TABLE tbl_name WRITE獨占鎖(寫鎖)無SELECT/INSERT/UPDATE/DELETE

標準操作流程

-- 1. 加鎖(以 READ 為例)
LOCK TABLE tbl_name READ;

-- 2. 刷新表快取確保一致性
FLUSH TABLES;

-- 3. 執行檢查、修復、備份等維護操作
-- myisamchk --recover tbl_name
-- 或 mysqldump ...

-- 4. 解鎖
UNLOCK TABLES;

關鍵細節

  • FLUSH TABLES 強制將記憶體緩衝寫入磁碟,確保鎖定生效時資料一致
  • 鎖定為連接級別:同一連接可多次鎖定同表,需同樣次數 UNLOCK
  • 連接斷開自動釋放所有鎖
  • 僅支援表級鎖,不支援行級鎖(InnoDB 行鎖透過交易隱式處理)

適用場景

  1. 離線備份:鎖定 → mysqldump / 複製檔案 → 解鎖
  2. 表修復:鎖定 → myisamchk → 解鎖
  3. 結構變更:大型 ALTER TABLE 期間防止寫入衝突
  4. 資料一致性匯出:多表關聯匯出需跨表一致性時

效能提醒

長時間持有 WRITE 鎖會嚴重阻塞寫入,甚至導致應用超時。維護操作建議在低峰期執行,並監控 SHOW PROCESSLIST 確認無大量等待鎖的查詢。

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