Parte 08 — Transacciones, concurrencia y recuperación
Que garantiza realmente ACID, que anomalías sobreviven en cada nivel de aislamiento y como se vuelve de una caída.
5 clases · 18 horas ·
24 conceptos · 15 fuentes
Antes de esta parte
Esta parte se apoya en lo trabajado antes. Si vienes de fuera del programa, revisa al menos el vocabulario de:
De qué trata esta parte
La parte donde el programa se pone serio con la corrección. Todo lo anterior asume implícitamente que las operaciones ocurren una detrás de otra y que la máquina no se apaga. Las cinco clases de aquí retiran esas dos suposiciones y muestran qué hace falta para que el sistema siga siendo correcto sin ellas.
ACID primero, con cuidado especial en la letra que más se malinterpreta: la consistencia es respetar las restricciones declaradas, así que lo que el motor no sabe no lo protege. Después las anomalías reales y la crítica de Berenson y otros, que demuestra que los niveles de la norma no las definen sin ambigüedad —de ahí que el nivel por defecto de tu motor no sea el que crees y haya que comprobarlo experimentalmente—. Luego los dos mecanismos que sostienen el aislamiento: bloqueo, que hace esperar, y versiones, que hacen copias. Después la recuperación, con el registro anticipado y ARIES. Y al final la parte que el motor no resuelve por ti: idempotencia, reintentos y bloqueo optimista en la aplicación.
Es la parte con más laboratorio por clase del programa, y no por casualidad: las anomalías de aislamiento se creen cuando se ven ocurrir en dos sesiones abiertas al mismo tiempo.
Al terminar esta parte podrás
- Explicar qué garantiza cada letra de ACID y quién implementa cada garantía.
- Reproducir experimentalmente una lectura no repetible, un fantasma y un sesgo de escritura.
- Explicar por qué con MVCC las lecturas no bloquean y qué costo de mantenimiento genera.
- Describir la recuperación tras una caída en términos de registro, punto de control, rehacer y deshacer.
- Diseñar una operación idempotente con clave de idempotencia y reintento con retroceso.
Las clases, una por una
Intermedio · 3 h ·
3 fuentes · requiere 005, 023
Qué garantiza cada letra de ACID y quién la implementa, con especial cuidado en la que más se malinterpreta: la consistencia es respetar las restricciones declaradas, así que lo que el motor no sabe no lo protege. Deja planteado que el aislamiento es la única letra que se vende por niveles.
atomicidad consistencia aislamiento durabilidad unidad de recuperación
Avanzado · 4 h ·
5 fuentes · requiere 043
Las anomalías reales —lectura sucia, no repetible, fantasma y sesgo de escritura— y la crítica de Berenson y otros que demuestra que los niveles de la norma no las definen sin ambigüedad. La consecuencia práctica es que el nivel por defecto de tu motor no es el que crees y hay que comprobarlo experimentalmente.
lectura sucia lectura no repetible fantasma sesgo de escritura snapshot isolation
Avanzado · 4 h ·
3 fuentes · requiere 044
Las dos formas de sostener el aislamiento: bloqueo en dos fases, que hace esperar, y control de versiones, que hace copias. Explica por qué con MVCC las lecturas no bloquean, y también su factura escondida: las versiones muertas que el vacuum tiene que recoger.
2PL versión de fila instantánea interbloqueo vacuum
Avanzado · 4 h ·
3 fuentes · requiere 043
Cómo se vuelve de una caída. El registro anticipado escribe la intención antes que el dato, el punto de control acorta la recuperación y ARIES ordena las fases de rehacer y deshacer de modo que repetirlas sea inofensivo —lo que permite recuperarse de una caída ocurrida durante la recuperación.
WAL punto de control rehacer deshacer LSN
Avanzado · 3 h ·
3 fuentes · requiere 045
La parte de la concurrencia que el motor no resuelve por ti. Trata la idempotencia como la única defensa realista frente a una red que no distingue «no llegó» de «se perdió la respuesta», y el bloqueo optimista y el reintento con retroceso como los dos patrones que toda aplicación con transacciones acaba necesitando.
idempotencia clave de idempotencia bloqueo optimista reintento con retroceso
Errores frecuentes en esta parte
Cada uno de estos es una creencia habitual y su corrección.
- «Mi motor es ACID, entonces mis transacciones son serializables.» El nivel por defecto casi nunca es serializable: suele ser `READ COMMITTED` o snapshot.
- «Snapshot isolation elimina todas las anomalías.» Deja pasar el sesgo de escritura, que es justo el que rompe invariantes de negocio.
- «MVCC no tiene costo.» Cada versión muerta hay que recogerla; cuando el vacuum se queda atrás, la tabla se hincha y los planes se degradan.
- «Si la transacción falla, reintento y ya.» Solo si la operación es idempotente. Si no, el reintento cobra dos veces.
Vocabulario de la parte
Los 24 términos que esta parte introduce. Todos están también
en el glosario del programa con sus términos
relacionados.
Fuentes usadas en esta parte
15 obras distintas sostienen lo que se afirma en estas
5 clases.
Otras partes