Saltar al contenido

¿ALTER TABLE – ADD COLUMN bloquea la tabla?

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 COLUMNpuede 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 un ALTER 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *