Nunca como una única sentencia update. Añade la columna como nullable sin reescritura por defecto, luego rellena en lotes pequeños ordenados por clave primaria, confirmando cada lote, con una pausa corta entre ellos y una comprobación del retraso de replicación. Haz el proceso reanudable guardando el progreso, ejecútalo fuera de hora punta, y haz que la aplicación escriba la columna nueva en filas nuevas y actualizadas para que el relleno solo tenga que cubrir el histórico.
Por qué lo preguntan los entrevistadores
Es una pregunta operativa disfrazada de tarea de datos, y es muy fácil fallarla. Un único update gigante puede retener bloqueos, hinchar el write ahead log, disparar el retraso de replicación y tumbar el sitio. El entrevistador quiere lotes, throttling basado en una señal viva, reanudación y la estrategia de escritura doble que permite conmutar con seguridad. También muestra si planificas el paso de verificación.
Cómo estructurar tu respuesta
- Explica por qué un update grande es peligroso: bloqueos, hinchazón, retraso de replicación.
- Describe el proceso por lotes, reanudable, y su señal de throttling.
- Haz que la aplicación escriba el valor nuevo de aquí en adelante.
- Define la verificación y el cambio a leer de la columna nueva.
Ejemplo de respuesta
Un update que toca doscientos millones de filas retiene bloqueos, genera una cantidad enorme de write ahead log y deja a las réplicas tan atrasadas que las lecturas empiezan a servir datos rancios, así que el sitio sufre aunque no se caiga nada. En vez de eso añado la columna como nullable, que en un Postgres moderno es barato porque no reescribe la tabla, y despliego primero el cambio de aplicación que la rellena en cada insert y cada update. Eso significa que el relleno solo tiene que ocuparse del histórico, y el histórico no se mueve. Después el proceso recorre la clave primaria en lotes de unos pocos miles, confirma cada lote, guarda el último id que terminó para poder reanudar tras un reinicio, y se pausa si el retraso de replicación o la carga de la base de datos cruzan un umbral. Lo ejecuto con un límite de velocidad en vez de a toda máquina. Cuando acaba, verifico con conteos y comprobaciones puntuales que no queda nada a null, luego cambio las lecturas a la columna nueva detrás de un flag, y solo después añado la restricción not null, validada aparte para que no tome un bloqueo largo.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo añadirías una restricción not null sin un bloqueo largo?
- ¿Con qué señal haces throttling y con qué umbral?
- ¿Cómo verificas que el relleno fue correcto y no solo completo?
Más preguntas para Desarrollador backend
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas