Krátká odpověď:Pro MySQL <5.6 jsou vyžadovány zámky. Od verze 5.6 a pomocí InnoDB se uzamyká nejsou vyžadovány pro mnoho ALTER TABLE
operace včetně přidání sloupce
.
Pokud používáte MySQL 5.5 nebo starší, získá zámek čtení pro celou operaci a poté krátký zámek na konci.
Z dokumentace MySQL pro ALTER TABLE ...
Což znamená, že při přidávání sloupce se při čtení uzamkne tabulka po většinu operace a poté se na konci dostane zámek pro zápis.
MySQL 5.6 přidal Online DDL na InnoDB, což urychluje a zlepšuje mnoho věcí, jako je změna tabulek a indexů. Přidání sloupce do tabulky již nebude vyžadovat zámky tabulky s výjimkou případných krátkých výhradních zámků na začátku a na konci operace .
mělo by proběhne automaticky, ale pro jistotu nastavte ALGORITHM=inplace
a LOCK=none
do vaší ALTER TABLE
prohlášení.
Existuje jedna výjimka...