Kort antwoord:Voor MySQL zijn <5.6 sloten vereist. Vanaf 5.6, en met behulp van InnoDB, vergrendelt zijn niet vereist voor veel ALTER TABLE
bewerkingen inclusief het toevoegen van een kolom
.
Als u MySQL 5.5 of ouder gebruikt, krijgt het een leesvergrendeling voor de hele bewerking en vervolgens een korte schrijfvergrendeling aan het einde.
Van de MySQL-documentatie voor ALTER TABLE ...
Dat wil zeggen, wanneer een kolom wordt toegevoegd, wordt de tabel voor het grootste deel van de bewerking vergrendeld en aan het einde een schrijfvergrendeling.
MySQL 5.6 heeft de Online DDL toegevoegd naar InnoDB, wat veel dingen versnelt en verbetert, zoals het wijzigen van tabellen en indexen. Het toevoegen van een kolom aan een tabel vereist niet langer tabelvergrendelingen behalve mogelijk korte exclusieve sloten aan het begin en einde van de operatie .
Het moet gebeurt automatisch, maar stel voor de zekerheid ALGORITHM=inplace
. in en LOCK=none
naar uw ALTER TABLE
verklaring.
Er is één uitzondering...