Mysql
 sql >> Base de données >  >> RDS >> Mysql

Modifier la table sans verrouiller toute la table

Réponse courte :Pour MySQL <5.6, des verrous sont nécessaires. A partir de 5.6 et en utilisant InnoDB, verrouille ne sont pas nécessaires pour de nombreux ALTER TABLE opérations, y compris l'ajout d'une colonne .

Si vous utilisez MySQL 5.5 ou une version antérieure, il obtiendra un verrou en lecture pour toute l'opération, puis un bref verrou en écriture à la fin.

De la documentation MySQL pour ALTER TABLE ...

Autrement dit, lors de l'ajout d'une colonne, il verrouille la table en lecture pendant la majeure partie de l'opération, puis obtient un verrou en écriture à la fin.

MySQL 5.6 a ajouté le DDL en ligne à InnoDB qui accélère et améliore de nombreuses choses telles que la modification des tables et des index. L'ajout d'une colonne à une table ne nécessitera plus de verrous de table sauf éventuellement brefs verrous exclusifs en début et fin d'opération .

Il devrait arriver automatiquement, mais pour être sûr, définissez ALGORITHM=inplace et LOCK=none à votre ALTER TABLE déclaration.

Il y a une exception...