【mysql】行鎖/間隙鎖/區間鎖


  • 行鎖 record lock
  • 間隙鎖 gap lock
  • 區間鎖 next-key lock

作用

防止幻讀

什么時候會取得gap lock或者next-key lock

隔離級別有關,只在REPEATABLE READ或以上的隔離級別下的特定操作才會取得gap lock或nextkey lock。
UPDATE和DELETE時,除了對唯一索引的唯一搜索外都會獲取gap鎖或next-key鎖。即鎖住其掃描的范圍。

簡單來說,影響到的字段不是唯一的,會變為區間鎖
如果是唯一的,會取得 行鎖

select * from t where id = 1 for update;

只鎖定一行記錄

select * from t where id >5 for update;

鎖定 (5,n] 的數據行

select * from t where field_a = 100 for update;

如果此字段沒有索引,會變為表鎖,因為需要一條一條遍歷,否則只鎖滿足只字段的數據

  • S 鎖 共享鎖,同一時刻都能讀但只能一個人寫
  • X 鎖 排他鎖,同一時刻讀寫都只能一個資源操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM