Кратък отговор:За MySQL <5.6 са необходими заключвания. От 5.6 нататък и с помощта на InnoDB ключва не са необходими за много ALTER TABLE
операции, включително добавяне на колона
.
Ако използвате MySQL 5.5 или по-стара версия, той ще получи заключване за четене за цялата операция и след това за кратко заключване на запис в края.
От документацията на MySQL за ALTER TABLE ...
Което означава, че при добавяне на колона тя четене заключва таблицата за по-голямата част от операцията, след което получава заключване на запис в края.
MySQL 5.6 добави Онлайн DDL към InnoDB, което ускорява и подобрява много неща, като например промяна на таблици и индекси. Добавянето на колона към таблица вече няма да изисква заключвания на таблица освен евентуално кратки изключителни заключвания в началото и в края на операцията .
Това трябва се случва автоматично, но за да сте сигурни, задайте ALGORITHM=inplace
и LOCK=none
към вашата ALTER TABLE
изявление.
Има едно изключение...