Почему блокировка Next-Key называется именно так? - PullRequest
1 голос
/ 01 июля 2019

Как я понимаю (исходя из официальных документов ), блокировка Next-Key - это блокировка индексной записи + блокировка пропуска ДО этой индексной записи (предшествующий разрыв).

Итак, я 'Мне интересно, почему это называется блокировкой NEXT-Key?Что здесь означает «ключ» и почему «следующий»?

1 Ответ

1 голос
/ 01 июля 2019

В этом контексте ключ означает одну запись в индексе.Таким образом, можно сказать, «ключ заблокирован», что означает, что некоторый сеанс удерживает блокировку записи в индексе.

Блокировка следующего ключа получается при поиске или сканировании индекса.

UPDATE mytable WHERE id > 18;

Предположим, что на самом деле есть значения в индексах 10, 11, 13 и 20 (как в примере в этом руководстве).ОБНОВЛЕНИЕ, показанное выше, блокирует запись на 20, а разрыв до 20, потому что это сканирование индекса.

Затем ваш сеанс пытается вставить в разрыв:

INSERT INTO mytable (id) VALUES (19);

Это конфликтуетс защелкой часть замка следующего ключа.

Подумайте об этом так: вы не можете получить блокировку для 19, потому что какой-то другой сеанс уже заблокировал пробел, который включает значение 19, которое вы хотите вставить, а также 20, что составляет следующий ключ после 19, который действительно существует в индексе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...