Unidad 4 Concurrencia



Unidad 4: Concurrencia en SQL Server 2025

Gestión de transacciones, aislamiento y control de acceso simultáneo a la base de datos

Importancia Estratégica en SQL Server 2025

El control de concurrencia garantiza que múltiples usuarios puedan leer y modificar datos al mismo tiempo sin destruir la integridad y consistencia del sistema. Sin un control adecuado, transacciones simultáneas podrían generar datos corruptos, lecturas inconsistentes o bloqueos infinitos (deadlocks).

4.1 Conceptos Fundamentales

La Concurrencia es la propiedad de los SGBD para ejecutar múltiples transacciones de forma simultánea. Se presentan tres problemas clásicos cuando no existe un aislamiento adecuado:

  • Lectura Sucia (Dirty Read): Leer datos no confirmados por otra transacción activa.
  • Lectura No Repetible (Non-repeatable Read): Leer un registro dos veces en una misma transacción y obtener valores distintos porque otra transacción lo modificó.
  • Lectura Fantasma (Phantom Read): Ejecutar una consulta de rango dos veces y obtener filas adicionales insertadas por otra transacción.
Transacción A Transacción B Recurso / Tabla

4.2 Propiedades ACID de las Transacciones

Toda transacción en SQL Server 2025 debe garantizar cuatro propiedades indispensables:

Atomicidad (A):
Todo o nada. Si falla un paso, la transacción completa se revierte.
Consistencia (C):
La base de datos pasa de un estado válido a otro estado válido.
Aislamiento (I):
Las operaciones simultáneas no interfieren entre sí.
Durabilidad (D):
Los cambios confirmados persisten ante fallos del sistema.

4.3 Grados de Consistencia y 4.4 Niveles de Aislamiento

SQL Server ofrece Niveles de Aislamiento para equilibrar el rendimiento de la concurrencia y la consistencia de los datos:

Nivel de Aislamiento Lectura Sucia Lectura No Repetible Lectura Fantasma
Read Uncommitted Sí permite Sí permite Sí permite
Read Committed (Por defecto) Previene Sí permite Sí permite
Repeatable Read Previene Previene Sí permite
Serializable Previene Previene Previene
Snapshot Previene Previene Previene

4.5 Control Manual: COMMIT y ROLLBACK

Mediante la instrucción BEGIN TRANSACTION abrimos un bloque transaccional. COMMIT guarda permanentemente los cambios, mientras que ROLLBACK deshace las modificaciones en caso de error.

Ejercicio Práctico 1: Transacción con Manejo de Errores (TRY…CATCH)

BEGIN TRANSACTION;
BEGIN TRY
    -- Descontar saldo de la cuenta origen
    UPDATE Cuentas 
    SET Saldo = Saldo - 500 
    WHERE CuentaID = 1;

    -- Incrementar saldo en la cuenta destino
    UPDATE Cuentas 
    SET Saldo = Saldo + 500 
    WHERE CuentaID = 2;

    -- Confirmar los cambios guardados permanentemente
    COMMIT TRANSACTION;
    PRINT 'Transferencia realizada exitosamente.';
END TRY
BEGIN CATCH
    -- Deshacer cambios en caso de error
    ROLLBACK TRANSACTION;
    PRINT 'Error detectado, se han revertido las operaciones.';
END CATCH;

Ejercicio Práctico 2: Modificación del Nivel de Aislamiento

-- Configurar el nivel de aislamiento a READ COMMITTED
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

BEGIN TRANSACTION;
    SELECT * FROM Inventario WHERE ProductoID = 10;
COMMIT TRANSACTION;

Examen Interactivo de Conocimientos

1. ¿Qué propiedad ACID garantiza que, si ocurre un fallo durante la transacción, todos los cambios previos se revierten?
2. ¿Cuál es el nivel de aislamiento por defecto en SQL Server 2025?

Concurrencia en SQL Server 2025
Guía visual · SQL Server 2025

Concurrencia en SQL Server 2025

Una guía paso a paso, visual y práctica para comprender cómo SQL Server coordina usuarios, datos y transacciones.

Aprende a proteger la integridad de los datos mientras mantienes operaciones ágiles y escalables.
4.1 · Conceptos

¿Qué significa concurrencia?

La concurrencia permite que distintas personas y procesos usen una base de datos a la vez, con mecanismos que mantienen la información confiable.

Concurrencia

Varias tareas progresan sobre los mismos datos sin perder el orden.

Bloqueo

Protección temporal de un recurso mientras una operación lo usa.

Simultaneidad

Usuarios trabajando al mismo tiempo, con coordinación.

Transacción

Grupo de acciones que se completa entero o se deshace entero.

Control de acceso

Reglas que deciden cuándo leer, escribir o esperar.

Usuario A
Actualiza
SQL Server
recurso
Bloqueo
protege
Liberación
COMMIT
Usuario B
continúa
4.2 · Propiedades de las transacciones

ACID: las cuatro garantías de una transacción

Las propiedades ACID convierten operaciones complejas —como una transferencia— en procesos predecibles y seguros.

Atomicidad

Todo ocurre o nada ocurre. No hay cambios a medias.

Consistencia

Las reglas y relaciones válidas se conservan antes y después.

Aislamiento

Una transacción no expone su trabajo incompleto a otra.

Durabilidad

Al confirmar, el cambio permanece incluso ante un fallo.

Cuenta origen− $500
Cuenta destino+ $500
4.3 · Grados de consistencia

Los datos pueden verse de formas muy distintas

El grado de consistencia determina qué cambios puede observar una consulta mientras otras transacciones siguen activas.

Situación ¿Qué ocurre? Riesgo Lectura sencilla
Consistencia fuerte Solo se observan datos confirmados y coherentes. Controlado Ves una versión estable del dato.
Lectura sucia Se lee un cambio aún no confirmado. Alto Podrías leer algo que después se revierte.
Lectura no repetible La misma fila cambia entre dos lecturas. Medio El valor de hoy ya no coincide unos segundos después.
Lectura fantasma Aparecen o desaparecen filas de una consulta. Medio Al repetir un filtro, encuentras registros nuevos.
4.4 · Niveles de aislamiento

Elige el equilibrio entre velocidad y protección

Cada nivel controla cuánta interferencia puede existir entre transacciones. Más aislamiento suele implicar más coordinación.

READ UNCOMMITTED
⚠ Puede permitir lecturas sucias.
READ COMMITTED
✓ Evita lecturas sucias.
REPEATABLE READ
✓ Evita sucias y no repetibles.
SERIALIZABLE
✓ Evita sucias, no repetibles y fantasmas.
SNAPSHOT
✓ Lee una versión consistente del dato.
4.5 · COMMIT y ROLLBACK

Confirmar o revertir: el cierre correcto

Una transacción termina confirmando todos sus cambios con COMMIT o deshaciéndolos de manera segura con ROLLBACK.

1. BEGIN TRANSACTION

Se inicia una unidad de trabajo y se preparan los cambios.

2. Cambios controlados

Las operaciones se validan mientras se mantienen las garantías necesarias.

3. COMMIT o ROLLBACK

Confirma de forma durable o revierte la unidad completa.

EJEMPLO · CONFIRMAR
BEGIN TRANSACTION;
UPDATE Cuentas
SET saldo = saldo - 500
WHERE id = 1;

UPDATE Cuentas
SET saldo = saldo + 500
WHERE id = 2;

COMMIT;
EJEMPLO · REVERTIR
BEGIN TRANSACTION;
UPDATE Inventario
SET stock = stock - 1
WHERE producto_id = 18;

IF @@ERROR <> 0
  ROLLBACK;
ELSE
  COMMIT;
Importancia en SQL Server 2025

Concurrencia para entornos modernos

Múltiples usuarios: coordina operaciones concurrentes sin sacrificar la experiencia.
Rendimiento: elegir el aislamiento adecuado equilibra protección y fluidez.
Integridad: reduce resultados incoherentes en operaciones críticas.
Escalabilidad: ayuda a que aplicaciones modernas crezcan con control.
Ejercicios de comprensión

Pon a prueba tu criterio técnico

Responde brevemente. El objetivo es conectar cada concepto con una decisión real de diseño.

01

¿Es una transacción?

Una compra descuenta inventario y crea una factura. ¿Por qué deben completarse juntas?

02

Elige protección

Necesitas impedir lecturas sucias, pero priorizas rendimiento. ¿Qué nivel considerarías?

03

COMMIT o ROLLBACK

La segunda actualización de una transferencia falla. ¿Qué instrucción usarías y por qué?

Examen de conocimientos

Comprueba lo que aprendiste

Selecciona una respuesta por pregunta y revisa el resultado al final.

1. ¿Qué propiedad evita que una transacción vea el trabajo incompleto de otra?

2. Una lectura sucia utiliza un valor que todavía podría revertirse.

3. Si una operación crítica falla a mitad del proceso, ¿qué instrucción protege la coherencia?

4. ¿Qué nivel ofrece la protección más estricta contra filas fantasma?

5. COMMIT confirma una transacción y hace persistentes sus cambios.

6. ¿Cuál es el riesgo principal de Read Uncommitted?

Aún hay respuestas por revisar. Intenta identificar cada garantía de concurrencia. ¡Excelente! Identificaste correctamente las seis situaciones.