MySQL deadlock - Добавление столбцов

MySQL deadlock - Добавление столбцов

На днях у меня возникла неприятная проблема с MySQL. Я добавил два новых столбца в таблицу 'Promotions' (13 существующих столбцов, ~750 записей) с помощью интерфейса PHPMyAdmin. Этот запрос ("ALTER TABLE.....") никогда полностью не выполнялся и блокировал таблицу, так что каждый последующий запрос к 'Promotions' зависал и вставал в очередь. Мне потребовалось около часа, чтобы понять, что это происходит, и проблема была решена перезагрузкой моей базы данных.

Существуют ли стандартные меры предосторожности, которые необходимо предпринять, и известные проблемы, возникающие при изменении схем базы данных? Я никогда раньше не видел, чтобы происходила такая блокировка.

решение1

Рассмотрим следующий сценарий для более плавного изменения таблицы MySQL, особенно в производственной среде:

1. CREATE tmp_table LIKE original_table
2. ALTER tmp_table..
3. INSERT INTO tmp_table SELECT * FROM original_table
4. RENAME original_table to orginal_table_old
5. RENAME tmp_table to original_table
6. DROP original_table_old

Также вас может заинтересоватьСТОЛЫ В ПЛАНКУиРАЗБЛОКИРОВАТЬ ТАБЛИЦЫпо документации.

Редактировать: Существуют альтернативные решения этой проблемы, такие какpt-online-schema-changeинструмент от Percona.

Связанный контент