меня интересуют блокировки, когда "выберите ... для обновления несуществующих строк"; в настоящее время данные в таблице 'test02' являются такими же:
id
1
3
8
15
20
идентификатор столбца является первичным ключом;
при запуске:
сеанс1: запуск транзакции; выберите * из test02, где id = 7 для обновления;
, затем я открою другой сеанс и запускаюсь как стипендиаты:
сеанс2: начать транзакцию; выберите * из test02, где id = 7 для обновления;
, как я и ожидал, session2 будет ожидать блокировки гэпа (3, 8); однако две сессии проходят нормально. Кто-нибудь может помочь объяснить, почему session2 не ждет?
, но когда я запускаю следующее sql в session3: вставьте в test02 (id) значения (7); сеанс заблокирован, это означает, что в сеансе1 используется блокировка интервала но я не понимаю, почему session2 может работать нормально.
mysql версии 5.7 и 5.8 оба показывают одинаковый результат.