когда будет использоваться только блокировка промежутка, когда будет использоваться следующая блокировка ключа и почему? - PullRequest
0 голосов
/ 30 марта 2019

в соответствии со ссылкой на MySQL https://dev.mysql.com/doc/refman/8.0/en/innodb-locks-set.html

  1. Для блокировок чтения (SELECT с операторами FOR UPDATE или FOR SHARE), UPDATE и DELETE, для неуникальных индексов, InnoDB блокирует сканированный диапазон индексовиспользование блокировок пробелов или блокировок следующего ключа для блокирования вставок другими сеансами в промежутки, охватываемые диапазоном.
  2. UPDATE ... WHERE ... устанавливает эксклюзивную блокировку следующего ключа для каждой записи, с которой сталкивается поиск.Однако для операторов, которые блокируют строки с использованием уникального индекса для поиска уникальной строки, требуется только блокировка записи индекса.
  3. DELETE FROM ... WHERE ... устанавливает эксклюзивную блокировку следующего ключа для каждой записипоиск встречает.Однако для операторов, которые блокируют строки с использованием уникального индекса для поиска уникальной строки, требуется только блокировка записи индекса. Мой вопрос: 1. когда будет использоваться только блокировка пробела, когда следующий ключзамок будет использоваться и почему?2. как происходит взаимодействие между уровнем сервера mysql и блокировкой innodb?

    на той же странице: https://dev.mysql.com/doc/refman/8.0/en/innodb-locks-set.html

    1. INSERT устанавливает эксклюзивную блокировку для вставленной строки.Эта блокировка является блокировкой записи индекса, а не блокировкой следующего ключа (то есть, нет блокировки пробела) и не препятствует вставке других сеансов в промежуток перед вставленной строкой.

    2. INSERT ... ON DUPLICATE KEY UPDATE отличается от простой INSERT тем, что в строке, которая будет обновляться при возникновении ошибки дублирующегося ключа, помещается эксклюзивная блокировка, а не общая блокировка.Для дублирующегося значения первичного ключа принимается исключительная блокировка записи индекса.Исключительная блокировка следующего ключа используется для дублирования значения уникального ключа.

    , почему блокировка следующего ключа используется для дублирования уникального ключа, когда используется INSERT ... ON DUPLICATE KEY UPDATEчем блокировка записи?

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