22 Sept 2022 🧃
Usaremos concurrencia para usar a la vez la memoria y el disco (saldrán bloqueos )
Organización de memoria asociada a un SGBD
Local
Global o compartida
Disco
Log
Transacción : conjunto de operaciones que se reflejan como una única operación (ej: sacar dinero, incluyendo varias lecturas y escritura)
Cada ejecución SQL se ejecuta de forma transaccional (valor de la propiedad AutoCommit = true). Si lo ponemos a false, las operaciones se ejecutarán cuando nosotros queramos
Se puede hacer:
Commit (implícito o explícito)
Rollback
Propiedades ACID (atomicidad, consistencia, asilamiento, durabilidad)
Atomicidad : o todas o ninguna (ocurre completamente o no ocurre)
Consistencia : asegurarse de que los datos sean consistentes (años > 0)
Aislamiento : el efecto de las transacciones concurrentes ha de ser el mismo que si se ejecutasen una detrás de otra
Durabilidad : los efectos de las operaciones han de ser permanentes (persistentes)
Una transacción es una lista de operaciones:
Las operaciones son:
lecturas → R(O)
escrituras → W(O)
Las transacciones terminan con Commit o Abort
Planificación : intercalado de operaciones de un conjunto de transacciones
El planificador decide el plan de ejecución (planificación)
Comprobar si una planificación es serializable → se crea un grafo de precedencia
Una planificación es serializable si no hay ciclos en el grafo de precedencia
Conflictos
Lecturas sucias : conflicto de lectura escritura
Lecturas no repetibles : conflicto de dos lecturas y los resultados son distintos cuando deberían ser el mismo
Lecturas fantasmas
Lecturas inconsistentes
Pérdida parcial de la actualización
¿Cómo gestionar los conflictos?
Enfoque pesimiesta
Evitar conflictos empleando un mecanismo de bloqueos (Lock-Based Concurrency Control)
Dos tipos de locks:
Compartidos: para leer
Exclusivos: para escribir, y prohibe lecturas y escrituras de los demás. Para acabar, hago un unlock
PROBLEMAS: interbloqueos debido a la competencia
Enfoque optimista
Control de versiones para detectar si han ocurrido conflictos
Tres fases de transacciones:
Fase de simulación
Fase de validación
Fase de escritura