23 августа 2012

Блокировки в InnoDB (шпаргалка)

MySQL
Recovery mode
Решил разобраться в вопросе блокировок в InnoDB. Получилась такая вот краткая шпаргалка. Может кому пригодится. Буду благодарен сообществу за найденные неточности

И так, в пределах одной транзакции, после…

UPDATE… WHERE

SELECT… WHERE выполняется без блокировки (кроме чтений в режиме изоляции SERIALIZABLE)
SELECT… LOCK IN SHARE MODE ждет освобождение блокировки
SELECT… FOR UPDATE ждет освобождение блокировки
UPDATE и DELETE ждет освобождение блокировки

Если UPDATE… WHERE выполнился в режиме изоляции REPEATABLE READ или SERIALIZABLE и строки выбирались не по уникальному ключу, то блокируются также INSERT в этот ключ (так называемый NEXT-KEY LOCK), но при READ COMMITTED и READ UNCOMMITTED такой блокировки не происходит

DELETE FROM… WHERE

Так же как и для UPDATE… WHERE

SELECT… WHERE

Во всех режимах изоляции кроме SERIALIZABLE

Остальные потоки могут читать и писать/удалять
INSERT блокируется так же как и в UPDATE… WHERE

При REPEATABLE READ чтение «заносится в буфер» и все последующие обращение возвращают одинаковый результат
При READ COMMITED и READ UNCOMMITTED каждый запрос возвращает свежий результат (после завершения транзакции другим потоком)

В режиме изоляции SERIALIZABLE

Остальные потоки могут только читать (кроме чтений SELECT… FOR UPDATE)
UPDATE и DELETE ждет освобождение блокировки
INSERT блокируется так же как и в UPDATE… WHERE

SELECT… LOCK IN SHARE MODE

Остальные потоки могут только читать
UPDATE и DELETE ждет освобождение блокировки
INSERT блокируется так же как и в UPDATE… WHERE

SELECT… FOR UPDATE

SELECT… WHERE могут читать (кроме чтений в режиме изоляции SERIALIZABLE)
SELECT… LOCK IN SHARE MODE и SELECT… FOR UPDATE ждут освобождения блокировки
UPDATE и DELETE ждет освобождение блокировки
INSERT блокируется так же как и в UPDATE… WHERE
Теги:mysqlinnodbблокировки
Хабы: MySQL
+46
16,6k 274
Комментарии 4
Похожие публикации
SMM-менеджер
27 ноября 202069 900 ₽Нетология
Fullstack-разработчик на JavaScript
27 ноября 202083 200 ₽SkillFactory
Дизайнер интерфейсов
27 ноября 202076 000 ₽GeekBrains
Интернет-маркетолог
27 ноября 202074 900 ₽Нетология
Основы HTML и CSS
30 ноября 2020БесплатноНетология
▇▅▄▅▅▄ ▇▄▅