Práctica de Logging (Bases de Datos)
Ejercicio 1
a) <CKPT> al final de todo o luego del <commit T1>, sólo se puede poner uno.
b) <Start CKPT> despues de <Commit T2>, <End CKPT> despues de <Commit T1>
c) Cambiar registros <Ti,X,a,b> por <Ti,X,b-1,b>
Ejercicio 2
a) Deshacer T1; A=10
b) T2 no hay que hacer nada. Deshacer T1,T12; C=310,A=10
c) Deshacer T1,T2; E=50,R=12,C=30,A=10
d) Todos commitearon o abortaron
Ejercicio 3
a) Nada (nadie hizo commit)
b) Rehacer T2; B=20,D=40
c) idem b
d) Rehacer T1 y T2; A=10,B=20,C=30,D=40,E=50
Ejercicio 4
a)
- i) Deshacer T1,T2,T4; B=16,A=8
- ii) Deshacer T1 C=56,A=8
b)
- i) Rehacer T3; E=24,F=40
Ejercicio 5
a)
- Deshacer T1,T2
- Cambios vars: B=200, A=100
- Cambios log: <Abort T1>,<Abort T2>
b)
- Deshacer T1,T2; Rehacer T3
- Cambios vars: E=40,C=300,B=200,A=100 (undo), D=400,F=500 (redo)
- Cambios log: <Abort T1>,<Abort T2>
c)
- Deshacer T1,T4; Rehacer T2,T3
- Cambios vars: G=600,C=200,A=100 (undo), B=210,D=410,E=41,F=510 (redo)
- Cambios log: <Abort T1>,<Abort T4>
d)
- Rehacer T1,T2,T3,T4
- Cambios vars: A=110,B=210,C=310,D=410,E=41,F=510,G=610,H=710
- Cambios log: -
Ejercicio 6
i)
a) despues de <Commit T1>
b) despues de <Commit T2>
c) idem b
d) despues de <Commit T4>
e) idem d
ii) La respuesta es igual para todos: recorro el log hasta el <START CKPT> siempre y cuando me haya topado con el <END CKPT>, sino lo tengo que recorrer hasta el principio.