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

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

     編輯:MySQL 資料庫相關知識

在執行表檢查(CHECK TABLE)、修復(REPAIR TABLE)或匯出備份等維護操作前,加鎖可防止資料被同時修改導致不一致。

基本語法

-- 加鎖(讀鎖:允許讀、禁止寫)
LOCK TABLE tbl_name READ;

-- 刷新表緩存至磁碟(確保檢查/修復讀到最新資料)
FLUSH TABLES;

-- 執行維護操作...
-- CHECK TABLE tbl_name;
-- REPAIR TABLE tbl_name;

-- 解鎖
UNLOCK TABLES;

鎖模式差異

模式效果適用場景
READ所有 Session 可讀、不可寫;持鎖 Session 只能讀備份、檢查、只讀報表
WRITE持鎖 Session 可讀寫;其他 Session 全部阻塞(不可讀寫)修復表、大量批次更新、結構變更

注意事項

  • LOCK TABLES 需 LOCK TABLES 權限。
  • 同一 Session 內可重複鎖定同一表,但必須對應相同次數 UNLOCK TABLES。
  • 隱含提交:LOCK TABLES 會隱含提交當前事務;UNLOCK TABLES 也會隱含提交。
  • InnoDB 表建議優先用行鎖(SELECT ... FOR UPDATE),表鎖會降低併發效能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved