Zusammenfassung der Ressource
Transacciones
- Concurrencia
- Planificadores
- Comandos
combinados
dentro de una TX
- En serie: 1º TX1, 2º TX2...
- No en serie: TXs intercaladas
- 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