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

MySQL InnoDB 鎖機制深度解析:行鎖、意向鎖、間隙鎖、死鎖檢測與避坑指南

     編輯:MySQL 綜合教學

MySQL InnoDB 鎖機制深度解析:行鎖、意向鎖、間隙鎖、死鎖檢測與避坑指南

InnoDB 通過索引實現行級鎖,支援共享鎖(S)、排他鎖(X)、意向鎖(IS/IX)、記錄鎖、間隙鎖、Next-Key 鎖。本文從鎖類型、兼容矩陣、鎖算法、自增鎖、外鍵鎖、鎖監控、阻塞/死鎖處理七大維度深度解析,附帶 information_schema 三張鎖表實戰查詢與 innodb_autoinc_lock_mode 參數調優建議。

鎖類型與兼容矩陣

鎖類型語句示例兼容性
共享鎖 (S)SELECT ... LOCK IN SHARE MODES✅ S✅ X❌
排他鎖 (X)SELECT ... FOR UPDATE / UPDATE/DELETES❌ X❌
意向共享鎖 (IS)表級,加行 S 鎖前自動獲取IS✅ IX✅ S✅ X❌
意向排他鎖 (IX)表級,加行 X 鎖前自動獲取IS✅ IX✅ S❌ X❌

行鎖算法(核心:基於索引)

  1. Record Lock:單條索引記錄鎖,主鍵/唯一索引精確鎖定
  2. Gap Lock:間隙鎖,鎖定開區間 (A, B),防止幻讀
  3. Next-Key Lock:Record Lock + Gap Lock,鎖定 (A, B],RR 隔離級別默認

關鍵規則:

  • 主鍵/唯一索引等值查詢 → Record Lock
  • 非唯一索引/範圍查詢 → Next-Key Lock
  • 無索引/全表掃描 → 升級為表鎖

鎖監控三表

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