sql >> Base de Datos >  >> RDS >> Mysql

Modificar la tabla sin bloquear toda la tabla

Respuesta corta:para MySQL <5.6 se requieren bloqueos. A partir de 5.6 y usando InnoDB, bloqueos no son necesarios para muchos ALTER TABLE operaciones, incluida la adición de una columna .

Si está utilizando MySQL 5.5 o anterior, obtendrá un bloqueo de lectura para toda la operación y luego un breve bloqueo de escritura al final.

De la documentación de MySQL para ALTER TABLE ...

Es decir, al agregar una columna, la lectura bloquea la tabla durante la mayor parte de la operación y luego obtiene un bloqueo de escritura al final.

MySQL 5.6 agregó el DDL en línea a InnoDB, que acelera y mejora muchas cosas, como la modificación de tablas e índices. Agregar una columna a una tabla ya no requerirá bloqueos de tabla excepto posibles bloqueos exclusivos breves al principio y al final de la operación .

debería ocurrirá automáticamente, pero para estar seguro establezca ALGORITHM=inplace y LOCK=none a su ALTER TABLE declaración.

Hay una excepción...