Desarrollador de Bases de Datos y SQL: pregunta de entrevista
¿Cómo afectan los bloqueos y transacciones a la concurrencia?
Las transacciones mantienen locks o versiones para preservar aislamiento; mayor alcance y duración aumentan bloqueo y deadlocks. Hazlas cortas, accede en orden consistente, indexa predicados y elige aislamiento por invariante.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Una transacción toma locks, o en motores multiversión crea versiones, para mantener consistentes sus lecturas y escrituras hasta el commit. Los locks de fila bloquean a otros escritores sobre las mismas filas; algunas operaciones escalan a locks de tabla; los locks de índice y de hueco aparecen bajo aislamiento más estricto. Cuanto más vive una transacción y más filas toca, más esperan los demás, y dos transacciones que adquieren los mismos recursos en distinto orden pueden bloquearse mutuamente, lo que el motor resuelve abortando una. La concurrencia viene de transacciones cortas que leen primero y escriben al final, orden de acceso consistente entre rutas de código, índices que permiten a las escrituras bloquear pocas filas y un nivel de aislamiento elegido por operación.
Ejemplo
Un job nocturno que actualizaba un millón de filas en una transacción bloqueó todas las escrituras de pedidos diez minutos; dividirlo en lotes de 5.000 con commit en cada uno eliminó el bloqueo. Un deadlock recurrente entre la ruta de checkout, que bloqueaba pedidos y luego inventario, y el job de reposición, que bloqueaba inventario y luego pedidos, desapareció cuando ambos adquirieron primero inventario.
Errores frecuentes
- Mantener una transacción abierta esperando entrada del usuario o una API externa.
- Actualizar filas con un predicado sin índice y bloquear mucho más de lo previsto.
- Reintentar a ciegas una transacción bloqueada sin arreglar el orden de adquisición.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.