🧠 Causas raíz#
- DDL bloqueante sobre una tabla caliente. El motor toma el lock exclusivo y lo mantiene hasta terminar; no hay nada que la aplicación pueda hacer mientras tanto.
- Migración en un solo paso. Agregar la columna, rellenarla y cambiar el código en la misma operación obliga a que todo entre en la misma ventana de lock.
- Sin feature flag. Sin un interruptor que separe «la columna existe» de «la aplicación la usa», el cambio de esquema y el de comportamiento van juntos y no se pueden revertir por separado.
- Backfill sin pausas. Un backfill por lotes sin
sleepentre ellos es unALTER TABLElargo escrito en pedazos: el motor nunca recupera aire. - Validado contra un dataset de juguete. La migración que tardó 200 ms en staging con mil filas tarda veinte minutos con dos millones, y eso solo se descubre en producción.
Caso 17 · Migración de esquema sin downtime — ⬅️ README del caso · ⚖️ Comparativa de los 7 stacks
🗺️ Contexto · 🩺 Síntomas · 🔍 Diagnóstico · 🧠 Causas raíz · 🛠️ Opciones de solución · ⚖️ Trade-offs · 💼 Valor de negocio · 🚨 Postmortem