concepto · intermedio · 2 min de lectura
Locks de Base de Datos
Los locks son mecanismos que impiden que dos transacciones modifiquen los mismos datos simultáneamente, garantizando la integridad en entornos concurrentes a costa de bloquear o esperar.
No requiere conocimientos previos.
Alcance en breve
Cubre
- Locks as a concept
No cubre
- implementation details
Supone
- The reader understands relevant fundamentals.
Resumen
Un lock —bloqueo— es un mecanismo de control de concurrencia que impide que múltiples transacciones accedan al mismo recurso de forma conflictiva. Cuando una transacción lee o escribe una fila, la base de datos adquiere un lock sobre ese recurso. Otra transacción que quiera acceder al mismo recurso debe esperar o es bloqueada, dependiendo del tipo de lock y del nivel de aislamiento.
Tipos principales de locks:
- Shared lock (S): permite lecturas concurrentes. Varias transacciones pueden tener un shared lock sobre la misma fila.
- Exclusive lock (X): bloquea escrituras y lecturas. Solo una transacción puede tener un exclusive lock. Se usa para INSERT, UPDATE, DELETE.
- Row-level vs table-level: locks sobre filas individuales versus locks sobre toda la tabla. Row-level permite más concurrencia pero tiene más overhead.
Alcance y supuestos
Cubre tipos de locks, granularidad y deadlocks en bases de datos relacionales. Asume familiaridad con transacciones.
Modelo mental
El baño de un avión. Una sola persona puede usarlo a la vez. Cuando está ocupado, el resto espera. Si dos personas intentaran entrar, sería un desastre. El lock es el indicador de «ocupado/libre» en la puerta.
Uso práctico
- ✅ Control de concurrencia automático en bases de datos relacionales.
- ❌ Locks de larga duración degradan el rendimiento y causan timeouts.
Ejemplo trabajado: deadlock entre dos transacciones
Tx1: UPDATE cuenta A, después UPDATE cuenta B. Tx2: UPDATE cuenta B, después UPDATE cuenta A. Si ambas corren al mismo tiempo, Tx1 lockea A y espera B, Tx2 lockea B y espera A —deadlock—. El motor detecta el deadlock y aborta una de las dos transacciones.
Evidencia
- PostgreSQL, MySQL y SQL Server implementan locks con distintos niveles de granularidad. La documentación de cada motor describe su estrategia de lockeo.
Fuentes citadas
- Wikipedia, Database index (Síntesis, 21-07-2026)