元資料鎖 SHARE_READ/EXCLUSIVE:
- 共享鎖:在DQL/DML的時候給表加 SHARE_READ/WRITE 鎖,與排它鎖互斥
- 作用:在A事務未提交的情況下,B事務不能修改表結構
- 排他鎖:在DDL的時候給表加EXCLUSIVE鎖,與共享/排他鎖都互斥,
- 作用:修改表結構的時候不允許執行DQL/DML
意向鎖 IS/IX:
-
意向共享鎖 IS:執行select ... lock in share mode 時,會加行共享鎖,以及對表加 IS
-
意向寫鎖 IX:執行DML陳述句時,會加行寫鎖,同時對表加 IX
-
作用:可以更快的知道能否加表鎖,否則的話要一行一行的掃描來判斷是否能夠加表鎖
對于同一張表,表鎖和行鎖不能共存
一個 sql 的加鎖情況
A事務執行DML,尚未提交
begin;
update tb_user set name = 'ccc' where id = 1;
where條件 滿足索引,那么就會加給該行記錄加行排他鎖 X、給該表意向寫鎖 IX 和 元資料共享鎖 SHARE_READ


在A事務未提交前,由于上述鎖的存在,那么其他事務不能做如下操作:
-
X:其他事務不能加 S/X,也就是其他的事務不能執行對該行資料執行DML,以及DQL(lock...)
- 作用:事務A未執行完畢時,防止其他事務又修改行資料
-
IX:其他事務不能加 表讀/寫鎖
-
SHARE_READ:其他事務不不能執行 DDL
行鎖
加行鎖的情況:
- 等值查詢 (唯一索引),查詢條件是表中不存在的記錄,S(臨鍵鎖) -> 退化成 Gap,對查詢條件后面那個資料加間隙鎖 Gap


像這種情況,由于id=13這個資料不存在,會鎖定12,14的這段間隙
-
等值查詢 (非唯一索引),查詢條件是表中存在的記錄,向索引后面找,直到找到不為查詢條件的那個索引,對它加 Gap,
對查詢條件加 S,臨鍵鎖
-
范圍查詢
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/541708.html
標籤:其他
上一篇:精準測驗之覆寫
下一篇:初學mybatis
