Conviene haber comprendido Planes de ejecución e índices.
Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.
Ubícate antes de avanzar
Al terminar deberías poder relacionar Anomalías con Aislamiento y resolver un caso nuevo.
Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.
Las primeras secciones se leen sin instalar nada. Para practicar SQL prepara PostgreSQL o un DBMS equivalente.
Abrir la guía de herramientas →Diagnóstico rápido: ¿cómo se relacionan Anomalías y Aislamiento? +
No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.
Aprende el tema paso a paso
Estudiarás qué ocurre cuando varias transacciones actúan a la vez y cómo aislamiento, bloqueos y versiones protegen reglas sin serializar todo el sistema.
- Dos operaciones correctas por separado pueden producir un resultado incorrecto juntas
- Más aislamiento reduce anomalías y puede aumentar esperas o abortos
- MVCC mejora lecturas, pero no elimina conflictos ni interbloqueos
Dos operaciones correctas por separado pueden producir un resultado incorrecto juntas
Una actualización perdida ocurre cuando dos transacciones leen el mismo valor y una sobrescribe a la otra. Lecturas no repetibles y fantasmas aparecen cuando el conjunto visible cambia durante una operación lógica.
Actualización perdida: un cambio válido desaparece.
Lectura no repetible: la misma fila cambia dentro de la transacción.
Fantasma: reaparecen filas que cumplen un predicado.
¿Por qué una transacción no garantiza por sí sola ausencia de carreras?
Mostrar respuesta +
Porque el nivel de aislamiento define qué interacciones son posibles. Dos transacciones pueden confirmar resultados incompatibles si la regla no está protegida correctamente.
Más aislamiento reduce anomalías y puede aumentar esperas o abortos
Read committed evita lecturas de cambios no confirmados; repeatable read estabiliza más observaciones; serializable busca un resultado equivalente a ejecutar de una en una. Los nombres exactos varían por motor, por lo que se prueba el comportamiento real.
Elige aislamiento según la regla que debes conservar.
Mantén transacciones breves y sin interacción humana.
Trata un aborto serializable como resultado esperado y reintentable.
¿El nivel más alto es siempre la mejor configuración global?
Mostrar respuesta +
No. Puede reducir concurrencia o provocar más reintentos. Se usa donde la corrección lo exige y se diseña la transacción para tolerar sus costos.
MVCC mejora lecturas, pero no elimina conflictos ni interbloqueos
El control multiversión permite que lectores vean una instantánea mientras otras transacciones escriben. Las escrituras sobre los mismos datos aún compiten; los bloqueos adquiridos en distinto orden pueden formar ciclos.
Adquiere recursos en un orden estable.
Define tiempos máximos y registra esperas.
Reintenta solo operaciones idempotentes o protegidas contra duplicación.
¿Por qué un reintento automático puede duplicar un cobro?
Mostrar respuesta +
Porque quizá el primer intento se confirmó pero la respuesta se perdió. Una clave idempotente permite reconocer que la operación ya se aplicó.
Tu recorrido en tres ideas
- Dos operaciones correctas por separado pueden producir un resultado incorrecto juntas
- Más aislamiento reduce anomalías y puede aumentar esperas o abortos
- MVCC mejora lecturas, pero no elimina conflictos ni interbloqueos
Reserva la última unidad sin venderla dos veces
Relaciona una regla del negocio con anomalías, aislamiento, bloqueos, versiones y reintentos seguros.
Dos personas leen stock = 1 casi al mismo tiempo y ambas intentan confirmar la compra.
Procedimiento
- Escribe la intercalación exacta que produce la venta doble.
- Protege la transición con actualización condicional, bloqueo o aislamiento apropiado.
- Define qué recibe quien pierde la carrera y cómo se reintenta sin duplicar pagos.
Evidencia mínima
- Invariante stock ≥ 0.
- Prueba concurrente repetible con dos sesiones.
- Identidad idempotente para la operación externa.
Mostrar razonamiento modelo +
El núcleo es hacer atómica la decisión “había stock y ahora descuento”. Leer y actualizar en sentencias separadas deja una ventana. Una actualización condicionada por stock > 0 y verificación de filas afectadas puede cerrar esa ventana.
Para ir más lejos¿Cómo cambia el diseño si el pago externo tarda treinta segundos?
Comprueba que puedes usarlo
Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.
Suponer que envolver código en una transacción elimina todas las carreras.
Reintentar una operación sin identidad y duplicar sus efectos.
Ahora hazlo sin guía
Diseña una reserva de la última unidad que funcione con dos compradores concurrentes e incluya manejo de conflicto.
Mostrar pauta de corrección +
- Nombra la anomalía que evita.
- Protege la regla con una operación o aislamiento adecuado.
- El reintento es seguro e idempotente.
