Kort svar:För MySQL krävs <5.6 lås. Från och med 5.6 och med InnoDB, låser krävs inte för många ALTER TABLE
operationer inklusive att lägga till en kolumn
.
Om du använder MySQL 5.5 eller äldre kommer den att få ett läslås för hela operationen och sedan ett kort skrivlås i slutet.
Från MySQL-dokumentationen för ALTER TABLE ...
Det vill säga, när du lägger till en kolumn låser den tabellen under större delen av operationen och får sedan ett skrivlås i slutet.
MySQL 5.6 lade till Online DDL till InnoDB som snabbar upp och förbättrar många saker som att ändra tabeller och index. Att lägga till en kolumn i en tabell kommer inte längre att kräva tabelllås förutom eventuellt korta exklusiva lås i början och slutet av operationen .
Det bör ske automatiskt, men för att vara säker ställ in ALGORITHM=inplace
och LOCK=none
till din ALTER TABLE
uttalande.
Det finns ett undantag...