Risposta breve:per MySQL <5.6 sono necessari blocchi. A partire dalla 5.6 e utilizzando InnoDB, si blocca non sono richiesti per molti ALTER TABLE
operazioni inclusa l'aggiunta di una colonna
.
Se stai usando MySQL 5.5 o versioni precedenti, otterrà un blocco di lettura per l'intera operazione e quindi un breve blocco di scrittura alla fine.
Dalla documentazione MySQL per ALTER TABLE ...
Vale a dire, quando si aggiunge una colonna, la lettura blocca la tabella per la maggior parte dell'operazione, quindi ottiene un blocco di scrittura alla fine.
MySQL 5.6 ha aggiunto il DDL online a InnoDB che velocizza e migliora molte cose come l'alterazione di tabelle e indici. L'aggiunta di una colonna a una tabella non richiede più i blocchi di tabella salvo eventuali brevi blocchi esclusivi all'inizio e alla fine dell'operazione .
dovrebbe avviene automaticamente, ma per sicurezza imposta ALGORITHM=inplace
e LOCK=none
al tuo ALTER TABLE
dichiarazione.
C'è un'eccezione...