Académique Documents
Professionnel Documents
Culture Documents
Administracion de Transacciones
Aislamiento (+ Consistencia) => Control de la concurrencia
Atomicidad + Durabilidad => Recuperacion
Como funcionan
Son usualmente activadas por solicitudes de los usuarios via SQL o otro Data Manipulation Languages (DML). Las transacciones accesan a la base de datos via operaciones de lectura o escritura
INSERT, UPDATE, DELETE, o SELECT . Pueden modificar valores de atributos en tablas, cambiar las estructura de la base de datos, etc El alcance lo define el usuario.
Transacciones
Con xito
AbreTransaccin Operacin Operacin
Operacin CierraTransaccin
Operacin AbortaTransaccin
Estados de la transaccion
Una transaccion alcanza su punto commit cuando todas las operaciones que accesan a la base de datos son completadas y el resultado se ha registrado en el log. Graba entonces un [commit, <transaction-id>] y termina. BEGIN END COMMIT
active
partially committed
ROLLBACK ROLLBACK aborted
committed
READ , WRITE
terminated
Cuando el sistema falla, busca en el log file las entradas [start, <transaction-id>] Y su no encuentra entradas [commit, <transaction-id>] Entonces deshace todas las operaciones registradas [write, <transaction-id>, X,6 old_value, new_value]
Entradas en el log
[start, <transaction-id>]: el inicio de ejecucion de la transaccion identificada como transaction-id [read, <transaction-id>, X]: la transaccion identificada como transaction-id reads el valor del item X de la base de datos [write, <transaction-id>, X, old-value, newvalue]: la transaccion identificada como transaction-id cambia el valor de X de la base de datos de su viejo valor al nuevo [commit, <transaction-id>]: la transaccion transaction-id se completa y sus efectos se registran [rollback, <transaction-id>]: la transaccion transaction-id se aborta y sus resultados se deshacen
7
Procedure Credit ( trans_id INTEGER, accno INTEGER, bcode CHAR(6), amount NUMBER) old NUMBER; new NUMBER; begin SELECT balance INTO old FROM account WHERE no = accno and branch = bcode; new := old + amount; UPDATE account SET amount = new WHERE no = accno and branch = bcode; COMMIT; EXCEPTION WHEN FAILURE THEN ROLLBACK;
17
Problemas
El sistema falla durante una transaccion
La base de datos queda en estado inconsistente solucion: recuperacion
10
Actualizacion Perdida
T1, T2: deposita en cuenta acc1 Es serial?? (si o no) Es serializable ? (si o no + por que)
Transactions T1: read(acc1) acc1 := acc1 + 10 T2: read(acc1) acc1 := acc1 + 20 write(acc1) commit State acc1 20 20 40 30
write(acc1) commit
Lectura Sucia
T1: dos depsitos en cuenta acc1, T2: suma todas las cuentas
Transactions T1: read(acc1) acc1 := acc1 + 10 write(acc1) T2: State acc1 20 sum 0
30 30 40
Lectura inconsistente
T1: le vearias veces de cuenta acc1, T2: deposita cuenta acc1
Transactions T1: read(acc1) T2: read(acc1) acc1 := acc1 + 20 write(acc1) commit read(acc1) sum := sum + acc1 write(sum) commit State acc1 20 20 40
40
Plan
Plan = un entrelazado de acciones (read/write) de un conjunto de transacciones, en el que el conjunto de acciones de cada una de las transacciones individuales estan en el orden original Plan completo = da el commit o aborta al final
14
Plan Serial
Una transaccion a la vez, no hay entrelazos
T1: T2: read(acc1) acc1 := acc1 + 20 write(acc1) commit
Estado final es consistente (si las transacciones lo son) Planes seriales diferentes dan estados finales diferentes tambien
16
Plan serializable
Plan con transacciones entrelazadas que produce el mismo resultado que un plan serial buenos" planes Los ejemplos anteriores son de planes no serializables
17
Verificando la seriabilidad
Idea: cuales acciones pueden ser intrecambiadas en un plan? Los siguientes, no pueden, sin crear un conflicto (cambiar el resultado)
Accciones dentro de la misma transaccion Acciones en transacciones distintas sobre el mismo objeto si al menos una de esas operaciones es una operacion write
Conflictos
Acciones en conflicto: par de acciones sobre el mismo objeto desde distintas transacciones donde al menos una de ellas es un write Dos planes son equivalentes-en-conflicto si tienen los mismos conflictos Un plan es serializable-en-conflicto si es enconflicto-equivalente a un plan serial
19
ejemplo
Estan en conflicto:
T1:R(X), T2:W(X), T3:W(X)
No estan en conflicto:
T1:R(X), T2:R(X), T3:R(X) T1:R(X), T2:W(Y), T3:R(X)
ejemplo
Mismos conflictos, equivalentes-en-conflicto
T1 W1(x)
T2 R2(x)
T3
conflicto
R2(x) W2(y) W3(y) R3(z) W3(z)
T2
T3
W3(y) W3(z)
Sconf
Sser
W3(z)
Serializable-en-conflicto
Plan serial
21
Graficamente
Nodo para cada transaccion Ti Una desde Ti a Tj si hay una accion de Ti que precede y esta en conflicto co una accion en Tj Teorema : Un plan es serializable-en-conflicto si su grafico es aciclico.
22
Ejemplo
T1 W1(x)
T2 R2(x)
T3
conflicto
R2(x) W2(y) W3(y) R3(z) W3(z) R3(z) W2(y) W3(y) W3(y) W3(z)
W1(y) W1(z)
T1
T2
T3
Grafico de seriabilidad
Sconf
23
ejemplo
solucion
Generar grafico
Generar grafico