Как блокировка таблицы влияет на изменение механизма таблиц с MyISAM на InnoDB? - PullRequest
3 голосов
/ 20 февраля 2012

Поэтому меня попросили изменить механизм нескольких таблиц в производственной базе данных с MyISAM на InnoDB. Я пытаюсь выяснить, как это повлияет на использование на производстве (поскольку сервер не может позволить себе простои).

Я прочитал противоречивую информацию. Некоторая информация, которую я прочитал, гласит, что таблицы заблокированы и не будут получать обновления до тех пор, пока не завершится преобразование (то есть, обновления не ставятся в очередь, просто отбрасываются до завершения).

В других местах я читал, что пока таблица заблокирована, вставки и обновления будут поставлены в очередь до завершения операции, а затем выполняются действия записи.

Так что же это за история?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

Это непосредственно из руководства :

В большинстве случаев ALTER TABLE создает временную копию оригинала. Таблица. MySQL ждет других операций, которые изменяют таблицу, затем продолжается. Включает изменение в копию, удаляет исходную таблицу и переименовывает новую. Пока ALTER TABLE есть после выполнения исходная таблица может быть прочитана другими сеансами. Обновления и записывает в таблицу, которая начинается после операции ALTER TABLE начинается, пока новая таблица не готова, затем автоматически перенаправляется на новую таблицу без неудачных обновлений.

Итак, номер два побеждает. Они не "провалились", они "застопорились".

0 голосов
/ 20 февраля 2012

Последнее верно.Все запросы к изменяемой таблице блокируются до завершения изменения и обрабатываются после его завершения.Обратите внимание, что это включает запросы на чтение (SELECT), а также запросы на запись (INSERT, UPDATE, DELETE).

...