Profesora: María Eugenia Weibel
Material: Respuestas Completas y Explicaciones
Detalladas
Respuesta Esperada: - Panel Transacción A
(izquierda) con vista de BD, SQL y estado - Panel Transacción B
(derecha) con vista de BD, SQL y estado
- Log de eventos del sistema (centro inferior) - Controles superiores
(botones demo y selector aislamiento) - Panel explicación (inferior)
Criterio de Evaluación: Identifica al menos 3 elementos principales
Respuesta: 2 transacciones (A y B)
Respuesta: READ COMMITTED
Nota Pedagógica: Este es el nivel por defecto de PostgreSQL
Respuesta: - ID: 1, Saldo: $1000, Usuario: Juan -
ID: 2, Saldo: $500, Usuario: María
- ID: 3, Saldo: $750, Usuario: Pedro
SQL Ejecutada:
BEGIN;
SELECT * FROM accounts WHERE id = 1;
Cambio Visual: Registro ID=1 se resalta (modificado)
Explicación: A inicia y lee el registro. En MVCC, las lecturas no bloquean.
Estado: Amarillo (waiting) Significado: B espera porque A ya modificó el registro
Concepto Clave: Row-level locking previene lost updates
Momento: Cuando intenta UPDATE del registro que B tiene bloqueado Razón: Conflicto de escritura - ambas compiten por mismo recurso Log: “Transacción A: Intentando actualizar el mismo registro” (warning)
Secuencia: 1. A: BEGIN + SELECT (lee $1000) 2. B: BEGIN + UPDATE (lock en ID=1, cambia a $1200) 3. A: Intenta UPDATE (bloqueada) 4. B: COMMIT (libera lock) 5. A: UPDATE procede (cambia a $800) 6. A: COMMIT
¿Por qué este orden? PostgreSQL usa “first-come, first-served” para locks
Sin locks: Race condition - resultado impredecible - Si ambas leen $1000 inicialmente - Una actualización se perdería (lost update) Con locks: $800 (determinístico y correcto)
Mecanismo: Row-level locking Funcionamiento: Lock exclusivo impide modificaciones concurrentes
Respuesta: NO en esta demo específica Razón: Demo usa principalmente escrituras, los write-locks son iguales
Problema 1: Dirty reads - leer datos no confirmados Problema 2: Decisiones basadas en datos que pueden revertirse
Respuesta: NO en esta demo Razón: Se enfoca en write conflicts, manejados igual en ambos niveles
Escenario: Reportes que requieren múltiples consultas consistentes sobre mismos datos
Respuesta: NO directamente observables Overhead: Mayor detección de conflictos, posibles rollbacks adicionales
Ejemplo 1: Sistemas financieros críticos Ejemplo 2: Auditorías que requieren consistencia absoluta
Transacción A: ID=1 ($1000 → $900) Transacción B: ID=2 ($500 → $600)
Secuencia: - A lock ID=1, intenta ID=2 - B lock ID=2, intenta ID=1 - Dependencia circular = ¡deadlock!
Indicadores: Ambos rojos (error) Log: “¡DEADLOCK DETECTADO! PostgreSQL elige víctima”
Elegida: Transacción A Criterio: PostgreSQL elige la “menos costosa” de abortar
¿Se pierden? SÍ - ROLLBACK automático ¿Por qué? Necesario para romper deadlock y mantener consistencia
Estrategia 1: Orden consistente - siempre ID menor primero Estrategia 2: Timeouts más cortos, transacciones más breves
Observado: ~1 segundo
¿Configurable? SÍ - parámetro
deadlock_timeout
Valor: $1500 (modificado pero no confirmado) ¿Confirmado? NO
Ejemplo: Transferencia bancaria - mostrar dinero “fantasma” que podría revertirse, llevando a decisiones erróneas
Bloqueo: B se bloquea hasta que A confirme cambios
Condición: Cuando A haga COMMIT o ROLLBACK
Valor: $1500 (confirmado) ¿Por qué correcto? Es el valor real y permanente
Primera: 3 registros Segunda: 4 registros (aparece Ana con $600)
Explicación: REPEATABLE READ garantiza que registros existentes no cambien, pero permite nuevas inserciones que cumplan criterios
Diferencia: B se bloquea al insertar, o detecta conflicto serialización
Rendimiento: Mayor CPU/memoria para tracking, más rollbacks, menor concurrencia
Primera: $1000 Segunda: $1300
Causa: B modificó y confirmó cambio entre las dos lecturas de A
Ejemplo: Cálculo de intereses que lee saldo inicial y final - si cambia entre medio, cálculo incorrecto
Solución: REPEATABLE READ o SERIALIZABLE
Significado: Lock exclusivo en filas seleccionadas Uso: Cuando planeas modificar datos leídos (read-then-write)
Definición: Locks controlados por aplicación, no automáticos Diferencia: Deben solicitarse y liberarse explícitamente
Sistema bancario: SERIALIZABLE - consistencia crítica Sistema reportes: REPEATABLE READ - consistencia interna Blog personal: READ COMMITTED - balance rendimiento/consistencia
Justificación: Sistemas críticos (financiero/médico) donde datos incorrectos son peores que retrasos. Deadlock preserva integridad.
Decisión: Analizar criticidad datos, frecuencia conflictos, tolerancia inconsistencias. Empezar READ COMMITTED, subir si necesario.
Problema: Race condition en verificación stock Solución: SELECT FOR UPDATE o reservas temporales con timeout
Configuración: REPEATABLE READ + SELECT FOR UPDATE Mecanismos: Locks en recursos limitados, timeouts para liberar
Separación: Réplicas lectura para reportes, escrituras cortas primario Niveles: READ COMMITTED escrituras, REPEATABLE READ análisis
Atomicidad: WAL + rollback automático Consistencia: Constraints + triggers + validaciones Isolación: MVCC + sistema locks Durabilidad: Sync disco + WAL persistente + checkpoints
Caso 1: Operaciones read-then-write Caso 2: Lógica negocio que requiere exclusión mutua Caso 3: Sistemas queue/cola con múltiples workers
Punto 1: Nivel aislamiento apropiado para cada operación Punto 2: Transacciones cortas para minimizar contención Punto 3: Retry logic para deadlocks/errores serialización Punto 4: Monitoreo continuo locks/deadlocks/transacciones largas Punto 5: Separar OLTP de OLAP
Evaluación: Buscar evidencia de: - Identificación conceptos desafiantes específicos - Conexión entre demos y aprendizaje - Planes concretos aplicación práctica - Curiosidad por temas relacionados - Feedback constructivo sobre herramienta
Respuesta esperada: Wait-for graph, detección ciclos cada deadlock_timeout, elección víctima por costo rollback
Evaluación: Diseño que demuestre uso apropiado diferentes niveles según operación
Sugerencias típicas: Más transacciones, diferentes operaciones, métricas rendimiento
© 2025 Instituto Superior ICOP - Material del
Docentes
Profesora: María Eugenia Weibel
Bases de Datos II
INSTITUTO SUPERIOR ICOP
Excelencia Académica
en Tecnología