Nuestros mejores programadores agotaron sus provisiones de café, en su búsqueda noche y día por la resolución, hasta que Alana encontró la contestación en Bitbucket así que hoy la compartimos aquí.
Solución:
Sí, bloquea la mesa. De los documentos en MySQL 8,
La excepción mencionada anteriormente es que
ALTER TABLE
bloquea las lecturas (no solo las escrituras) en el punto en el que está listo para borrar estructuras de tablas obsoletas de las cachés de tablas y definiciones de tablas. En este punto, debe adquirir un bloqueo exclusivo. Para hacerlo, espera a que terminen los lectores actuales y bloquea las nuevas lecturas y escrituras.
Y de los documentos que vinculaste, es bastante explícito
con instante
ADD COLUMN
puede disfrutar de todos los beneficios del almacenamiento estructurado sin la inconveniente de tener que reconstruir la mesa.
Como has dicho, estás en 10.2. Entonces parece que agregar una columna requerirá reconstruir toda la tabla.
En cuanto a lo que sucede cuando no puede recibir un candado,
me he dado cuenta de que
INSERT
instrucciones completas y las filas se insertan correctamente en la tabla (como se verifica a través de SELECT) antes de unALTER TABLE ... ADD COLUMN
en los acabados de la mesa.
Sí, eso es generalmente lo que sucede durante un bloqueo, pero tenga en cuenta que no es así. siempre lo que sucede. A veces, los estados de cuenta y las transacciones dejan de esperar. A veces, los backends y las agrupaciones se cosechan cuando están atascados esperando. Siempre es más seguro hacer esto durante el tiempo de inactividad, tener tiempos de espera y detectar errores de las bibliotecas cuando expiran los tiempos de espera. Siempre que esté utilizando transacciones, las cosas retroceden si algo se activa y no puede bloquearse antes del tiempo de espera, todo será kosher.
en realidad depende de la tabla de modificación específica, pero en cualquier caso, sugeriría buscar herramientas de cambio de esquema en línea como ghost (de GitHub) o pt-online-schema-change (de percona).
Ambas herramientas hacen el cambio en una tabla separada y cambian con el original al final; incluso puede conservar el anterior para una reversión rápida.
Es una ruta mucho más segura, especialmente para mesas pesadas.
Te mostramos las comentarios y valoraciones de los usuarios
Recuerda recomendar este artículo si te fue de ayuda.