В этом контексте ключ означает одну запись в индексе.Таким образом, можно сказать, «ключ заблокирован», что означает, что некоторый сеанс удерживает блокировку записи в индексе.
Блокировка следующего ключа получается при поиске или сканировании индекса.
UPDATE mytable WHERE id > 18;
Предположим, что на самом деле есть значения в индексах 10, 11, 13 и 20 (как в примере в этом руководстве).ОБНОВЛЕНИЕ, показанное выше, блокирует запись на 20, а разрыв до 20, потому что это сканирование индекса.
Затем ваш сеанс пытается вставить в разрыв:
INSERT INTO mytable (id) VALUES (19);
Это конфликтуетс защелкой часть замка следующего ключа.
Подумайте об этом так: вы не можете получить блокировку для 19, потому что какой-то другой сеанс уже заблокировал пробел, который включает значение 19, которое вы хотите вставить, а также 20, что составляет следующий ключ после 19, который действительно существует в индексе.