Seriable: algún plan en serie de las TX en ejecución. El resultado al final de
la secuencia es igual que la 'en serie'. El grafo resultado no tiene ciclos
Dos operaciones están en conflicto si
Pertenecen a diferentes TXs
Tiene acceso al mismo elemento
Al menos 1 es de escritura
Control de
concurrencia
Bloqueos
Exclusivo: una TX entrará en modo espera si
hay otra TX anterior con el objeto bloqueado
Compartido: dos TX pueden compartir SOLO un
objeto que la 1ª TX haya bloqueado previamente.
Protocolo (reglas) de bloqueo
Si TX solicita un bloqueo se le concederá si no hay conflictos
con otra TX y si no hay otra TX esperando para dicho bloqueo
Fase crecimiento: bloquea pero no libera
Fase decrecimiento: libera pero no bloquea
Bloqueo estricto de 2 fases: si el
bloqueo dura hasta el final de la TX
Problemas
Bloqueo mútuo, punto muerto o interbloqueo: ambas
TX quedan en espera. Sol: el DBMS libera la más reciente
Lectura sucia: hacer un rollback mientras la TX2 está leyendo. Sol:
el DBMS pone en espera la 2º TX hasta que haya un rollback
Lectura irrepetible. Sol: el DBMS no deja modificar al TX2 mientras TX1 esté leyendo
Fantasmas: faltan o sobran filas. Sol: el DBMS pone en espera T2 hasta recibir el commit de T1
Niveles de aislamiento
Lectura no confirmada: todos posibles
Lectura confirmada: NO LS, SI LI, SI F
Lectura repetible: NO LS, NO LI, SI F
Seriable: ninguno posible
Todas las operaciones ejecutadas
entre las declaraciones inicio y fin
ACID
Atomicidad: o se hace todo o no se rollback
Consistencia: la BD debe ser consistente antes y después de la TX
Isolation: ninguna TX afecta a otra y no se puede ver el estado intermedio de una TX
Durabilidad: al finalizar una TX los cambios en la BD permanecen aún si hay desastres
Log
Guarda todas las modificaciones. Compartido por todos los users.
Los datos se guardan 1º en log y luego en tablas de la bbdd usando los datos del log
Recuperación
Progresiva: se restaura el bk y se aplican todas las TX válidas
Regresiva: se deshacen cambios de TX erróneas o parciales y se reinician las válidas
Checkpoint
Detiene nuevas TX, vuelca logs de la memoria al HDD, genera punto de
revisión (lista de TX en ese momento). Reactiva las TX en ejecución