Krótka odpowiedź:Dla MySQL <5.6 wymagane są blokady. Od 5.6 i przy użyciu InnoDB blokady nie są wymagane dla wielu ALTER TABLE
operacje, w tym dodawanie kolumny
.
Jeśli używasz MySQL 5.5 lub starszego, otrzyma on blokadę odczytu na całą operację, a na końcu krótką blokadę zapisu.
Z dokumentacji MySQL dla ALTER TABLE ...
Oznacza to, że podczas dodawania odczytanej kolumny blokuje tabelę przez większość operacji, a na końcu otrzymuje blokadę zapisu.
MySQL 5.6 dodał DDL online do InnoDB, który przyspiesza i poprawia wiele rzeczy, takich jak zmiana tabel i indeksów. Dodanie kolumny do tabeli nie będzie już wymagać blokad tabeli oprócz możliwie krótkich wyłącznych blokad na początku i na końcu operacji .
powinno dzieje się to automatycznie, ale dla pewności ustaw ALGORITHM=inplace
i LOCK=none
do ALTER TABLE
oświadczenie.
Jest jeden wyjątek...