IOKELU
Nivel: Avanzado
💡 Prueba bloqueos y niveles de aislamiento:
Puedes ejecutar cualquier consulta de concurrencia en nuestra consola interactiva: Abrir consola SQL →

Bloqueos y concurrencia en SQL: control de acceso simultáneo

La concurrencia es uno de los temas más críticos en bases de datos. SQL utiliza bloqueos y niveles de aislamiento para evitar inconsistencias cuando múltiples usuarios acceden a los mismos datos.

1. Tipos de bloqueos

2. Bloqueos de lectura y escritura


-- Lectura con bloqueo compartido
SELECT * FROM cuentas WITH (HOLDLOCK);

-- Escritura con bloqueo exclusivo
UPDATE cuentas SET saldo = saldo + 100 WHERE id = 1;
    

3. Niveles de aislamiento

4. Problemas de concurrencia

5. Soluciones

6. Ejemplos prácticos


SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

BEGIN;
SELECT * FROM cuentas WHERE id = 1;
UPDATE cuentas SET saldo = saldo - 50 WHERE id = 1;
COMMIT;
    

-- Evitar deadlocks
BEGIN;
UPDATE cuentas SET saldo = saldo - 10 WHERE id = 1;
UPDATE cuentas SET saldo = saldo + 10 WHERE id = 2;
COMMIT;
    

7. Ejercicios para practicar

8. Mini‑proyecto: Sistema bancario concurrente


SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

BEGIN;
SELECT saldo FROM cuentas WHERE id = 10;
UPDATE cuentas SET saldo = saldo - 200 WHERE id = 10;
COMMIT;
    

9. Errores comunes

10. Preguntas frecuentes

¿Los bloqueos siempre son malos?

No, garantizan integridad.

¿SNAPSHOT elimina todos los bloqueos?

Evita muchos, pero no todos.


Siguiente guía

SQL Avanzado – Seguridad y roles →