У меня проблема с MySQL.
У меня большая таблица (8,5 миллиона записей), и я выполнил команду alter table add index
. Когда я это делаю, кажется, что все столы заблокированы.
Когда я выполнил list processlist
, я увидел, что все процессы находятся в стадии сна, а изменение выполняется.
Почему это заблокировало бы всю таблицу в базе данных? Я начинаю получать ошибки тайм-аута.
Это ошибка конфигурации на моей стороне? что мне нужно сделать, чтобы это больше не повторилось?
alter table
изменяет DDL затронутой таблицы, поэтому большинство СУБД получит монопольную блокировку таблицы, чтобы выполнить такое изменение. Для MySQL было бы полезно знать версию и механизм хранения (например, InnoDB), который вы используете. - person hardmath   schedule 11.06.2013