@kirill-93

Блокировки операций в MySQL?

Когда читаю документацию на тему "Блокировки в MySQL", там описываются всякие функции LOCK TABLE.
Есть ли в MySQL ситуации, когда одна операция мешает другой?
Например, я вставляю данные в таблицу, или удаляю их из таблицы, при этом может как-то замедлиться/заблокироваться чтение?
Например операция вставки из лога
Query_time: 0.409295 Lock_time: 0.000015
Что значит этот Lock_time, что таблица была заблокирована на запись на 0.000015?
Или, например, при изменении таблицы ALTER TABLE, все операции записи встают в очередь и ждут, когда изменение закончится, а операции выборки по-прежнему работают.
Где можно про такие блокировки прочесть, то есть меня интересуют не принудительные команды блокировки, а побочные.
  • Вопрос задан
  • 431 просмотр
Пригласить эксперта
Ответы на вопрос 2
gobananas
@gobananas
finishhim.ru
Или, например, при изменении таблицы ALTER TABLE, все операции записи встают в очередь и ждут, когда изменение закончится, а операции выборки по-прежнему работают.

Блокировки бывают на чтение и на запись https://habrahabr.ru/post/46542/ www.mysql.ru/docs/man/LOCK_TABLES.html
Блокировку на чтение можно применить например если в одно время большое количество скриптов пытаются взять именно первую запись из таблицы. После этого они либо делают UPDATE с пометкой что запись забрана или удаляют её. Практика показывает что если есть достаточное количество конкурентов то одну и ту же запись всё равно успеют ухватить несколько, что бы этого избежать можно вставить в каждый из них LOCK TABLES перед SELECT и разблокировать после. Работать будет медленнее но надёжно.
Ответ написан
Комментировать
Alyovkin
@Alyovkin
Full-stack developer
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы