注:加鎖規則指的是next-key lock,若是還不瞭解next-key lock,請閱讀上一篇博客javascript
加鎖規則能夠歸納爲:兩個原則、兩個優化和一個bug:原則1:加鎖的基本單位是next-key lock,前開後閉原則2:查找過程當中訪問到的對象纔會加鎖優化1:索引上的等值查詢,給惟一索引加鎖的時候,next-key lock退化成行鎖優化2:索引上的等值查詢,向右遍歷時且最後一個值不知足等值條件的時候,next-key lock退化爲間隙鎖1個bug:惟一索引上的範圍查詢會訪問到不知足條件的第一個值爲止。——丁奇
這裏用丁奇老師總結的規則,分場景進行分析:java
CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `c` (`c`) ) ENGINE=InnoDB; insert into t values(0,0,0),(5,5,5), (10,10,10),(15,15,15),(20,20,20),(25,25,25);