防止幻讀sql
隔離級別有關,只在REPEATABLE READ或以上的隔離級別下的特定操做纔會取得gap lock或nextkey lock。
UPDATE和DELETE時,除了對惟一索引的惟一搜索外都會獲取gap鎖或next-key鎖。即鎖住其掃描的範圍。code
簡單來講,影響到的字段不是惟一的,會變爲區間鎖
若是是惟一的,會取得 行鎖索引
select * from t where id = 1 for update;
只鎖定一行記錄資源
select * from t where id >5 for update;
鎖定 (5,n] 的數據行class
select * from t where field_a = 100 for update;
若是此字段沒有索引,會變爲表鎖,由於須要一條一條遍歷,不然只鎖知足隻字段的數據date