Escolar Documentos
Profissional Documentos
Cultura Documentos
Base de Datos II
Monica Caniupan
mcaniupa@ubiobio.cl
Universidad del B o-B o
Octubre 2013
Transacciones
concurrente y la Las transacciones son el fundamento de la ejecucion de un fallo del sistema en un SGBD recuperacion se dene como cualquier Una transaccion Un SGBD tiene entrelaza las acciones de varias transacciones concurrente de El SGBD debe garantizar que el resultado de una ejecucion transacciones sea equivalente (en su efecto sobre la BD) a alguna ejecucion secuencial
Transacciones
Octubre 2013
2 / 42
es una serie de Desde el punto de vista de un SGBD, una transaccion operaciones de escritura y lectura a la BD Un SGBD debe garantizar cuatro propiedades:
1
2 3
de cada transaccion es atomica: La ejecucion o se realizan todas las acciones o no se realiza ninguna Consistencia: las transacciones deben preservar la consistencia de la BD aisladas, o protegidas, de los efectos de otras Aislamiento: las transacciones estan transacciones naliza exitosamente, sus efectos deben persistir Durabilidad: si la transaccion incluso si se produce una ca da del sistema
Transacciones
Octubre 2013
3 / 42
son: lectura y escritura de Las acciones que puede ejecutar una transaccion objetos de la BD
t Rt (O ) denota lectura del objeto O por la transaccion Wt (O ) denota escritura de O por t debe indicar como ultima Cada transaccion accion:
termina satisfactoriamente, o commit (comprometer): indica que la transaccion termina pero se deshacen los cambios abort (abortar): indica que la transaccion realizados a la BD
Transacciones
Octubre 2013
4 / 42
Planes
(planicacion) es una lista de acciones (lectura, escritura, Un plan de ejecucion comprometer o abortar) de un conjunto de transacciones T aparecen en un plan debe El orden en el cual dos acciones de una transaccion ser el mismo orden en el que aparecen en T
Transacciones
Octubre 2013
5 / 42
Ejemplo: Plan
Consideremos los siguientes planes:
Plan no serial T1 T2 R (A ) W (A) R (B ) W (B ) R (C ) W (C ) commit T1 commit T2 Serial: T1 T2 T1 T2 R (A) W (A) R (C ) W (C ) commit T1 R (B ) W (B ) commit T2
Si las acciones de diferentes transacciones no son intercaladas, i.e. las transacciones son ejecutadas de inicio a n, una por una, el plan se denomina plan serial Para el ejemplo existen dos posibles planes seriales: T1 T2 y T2 T1
Transacciones
Octubre 2013
6 / 42
Los SGBD entrelazan las acciones de distintas transacciones para mejorar el rendimiento
necesita leer desde disco, el SGBD podr Si una transaccion a empezar a procesar otra transaccion
Surge entonces el concepto de planes serializables Un plan serializable sobre un conjunto S de transacciones que comprometen los cambios, es un plan cuyo efecto sobre cualquier instancia consistente de la BD se secuencial sobre S garantiza identico al de alguna planicacion
Transacciones
Octubre 2013
7 / 42
R (A)
Las ejecuciones secuenciales pueden producir distintos resultados, pero todos se de ellos sera el resultado de una suponen aceptables; el SGBD no garantiza cual entrelazada ejecucion
Transacciones
Octubre 2013
8 / 42
Dos acciones sobre el mismo objeto de la BD presentan conicto si por lo menos una de las acciones es una escritura Existen tres tipos de conictos entre dos transacciones T1 y T2 :
1 2 3
Conicto de escritura-lectura (WR) o lectura de datos no comprometidos Conicto de lectura-escritura (RW) o lecturas no repetidas Conicto de escritura-escritura (WW) o sobre-escritura de datos no comprometidos
Transacciones
Octubre 2013
9 / 42
El principal problema de WR es la lectura de datos no comprometidos, i.e. T2 lee un objeto que fue modicado por T1 , pero que aun no ha sido comprometido En tal caso, la lectura es conocida como lectura sucia
Transacciones
Octubre 2013
10 / 42
R (A), A=900 W (A), A=990 R (B ), B=500 W (B ), B=550 commit T2 R (B )= 550 W (B )= 650 commit T1
Transacciones
Octubre 2013
11 / 42
aun, Mas a escribir algun T1 podr valor para A que hace la BD inconsistente Es importante que T1 vuelva a escribir un valor correcto para A antes que T2 lea A se produce si las transacciones son ejecutadas de manera serial, ya Ningun dano tal inconsistencia que T2 no vera puede dejar la base de datos inconsistente por un per Una transaccion odo de la BD debe quedar en un tiempo, pero una vez comprometida la transaccion, estado consistente
Transacciones
Octubre 2013
12 / 42
El principal problema de lectura-escritura es la lectura no repetida de datos, i.e. T1 , mientras T2 modica el valor de un objeto A que es le do por una transaccion aun T1 esta en progreso diferente Si T1 vuelve a leer A, el valor sera Consideremos las transacciones T1 y T2 , y sea A el numero de copias disponibles de un libro
T1 lee A = 1 T2 lee A = 1, resta 1 y compromete (A=0) T1 trata de restar 1 a A y recibe un error, A ya no tiene el valor 1!
Transacciones
Octubre 2013
13 / 42
T2 sobre-escribe el valor de un objeto A que ya ha sido modicado por una T1 , mientras T1 todav en progreso transaccion a esta Este problema se conoce como sobre-escritura de datos no comprometidos Supongamos que los salario de Pedro y Juan deben ser iguales
T1 asigna salarios iguales a 2000 T2 asigna salarios iguales a 1000
Transacciones
Octubre 2013
14 / 42
intercalada: Supongamos la siguiente ejecucion T1 W (Juan), Salario=2000 W (Juan), Salario=1000 commit T2 W (Pedro), Salario=2000 commit T1 El plan no produce salarios iguales para Juan y Pedro Por lo tanto este plan no es serializable T2 W (Pedro), Salario=1000
Transacciones
Octubre 2013
15 / 42
aborta, todas las acciones son deshechas y la BD Cuando una transaccion vuelve al estado inicial Un plan serializable sobre un conjunto de transacciones S es un plan cuyo efecto serial sobre el sobre cualquier BD consistente es identico a alguna ejecucion conjunto de transacciones comprometidas en S de plan serializable asume que las transacciones que abortan Esta denicion deben ser completamente deshechas, lo cual puede ser imposible en algunas situaciones
Transacciones
Octubre 2013
16 / 42
T2 ha le do un valor de A que no deber a haber estado nunca ah Si T2 no comprometiera antes que T1 aborta, podr amos tratar la situacion propagando el aborto de T1 en cascada y abortar T2 y sus acciones no pueden ser deshechas! Este plan no Pero T2 ya comprometio es recuperable
Base de Datos II (Universidad del B o-B o) Transacciones Octubre 2013 17 / 42
Planes Recuperables
despues de que En un plan recuperable las transacciones se comprometen solo se comprometen todas las transacciones de las cuales se han le do cambios Si las transacciones leen solamente los cambios de transacciones es recuperable, sino que puede abortar una comprometidas, el plan no solo sin abortar otras transacciones en cascada (planes que evitan transaccion abortos en cascada)
Transacciones
Octubre 2013
18 / 42
en conicto si operan sobre el mismo objeto y al menos una Dos acciones estan de ellas es escritura Podemos cambiar el orden de acciones que no son conictivas sin alterar el efecto del plan sobre la BD Si dos planes son conicto equivalentes, tienen el mismo efecto sobre la BD Un plan es conicto serializable si es conicto equivalente con algun plan serial Todo plan conicto equivalente es serializable
Transacciones
Octubre 2013
19 / 42
Consideremos el siguiente plan: R1 (x ), R2 (y ), W3 (x ), R2 (x ), R1 (y ) Las operaciones pueden ser re-ordenadas de la siguiente manera:
Las lecturas de T1 pueden ser ejecutadas en el siguiente orden: R1 (x ), R1 (y ), R2 (y ), W3 (x ), R2 (x ) La lectura de T2 se puede reordenar de la siguiente forma: R1 (x ), R1 (y ), W3 (x ), R2 (y ), R2 (x ) serial T1 -T3 -T2 , y como consecuencia El plan es conicto equivalente a la ejecucion el plan es serializable
Transacciones
Octubre 2013
20 / 42
Transacciones
Octubre 2013
21 / 42
Grafos de Precedencia
Es posible capturar los potenciales conictos entre transacciones de un plan en un grafo de precedencia El grafo de precedencia G (S ) para un plan S se construye de la siguiente manera:
que compromete en S es un nodo en G (S ) Cada transaccion de Ti precede y es conictiva con alguna Existe un arco desde Ti a Tj si una accion de Tj accion
Un plan S es conicto serializable s y solo s su grafo de precedencia es ac clico (no contiene ciclos)
Transacciones
Octubre 2013
22 / 42
Transacciones
Octubre 2013
23 / 42
de planes que son serializables y Un SGBD solo debe permitir la ejecucion recuperables Para ello, el SGBD utiliza un protocolo de bloqueos Tenemos dos tipos de bloqueos (candados):
Exclusivos X Compartidos S (shared)
usado se denomina bloqueo exclusivo de dos fases El protocolo de bloqueo mas (2PL exclusivo)
Transacciones
Octubre 2013
24 / 42
T quiere leer (respectivamente, modicar) un objeto, primero Si una transaccion solicita un candado (bloqueo) compartido (respectivamente, exclusivo) sobre el objeto se liberan cuando la Todos los candados (bloqueos) concedidos a una transaccion se completa transaccion
tiene un candado exclusivo sobre un objeto, Obviamente, si una transaccion puede leer el objeto tambien que requiere un candado es suspendida hasta que el SGBD Una transaccion pueda otorgar el candado
Transacciones
Octubre 2013
25 / 42
Transacciones
Octubre 2013
26 / 42
tiene un candado exclusivo sobre un objeto, no puede haber Si una transaccion con un candado exclusivo o compartido sobre el objeto otra transaccion La siguiente tabla resume la entrega de candados: X S X NO NO S NO SI
El protocolo 2PL estricto permite que solo los planes seguros sean ejecutados y asegura que el grafo de precedencia de cualquier plan permitido sea ac clico T sobre ST (O ) denota la solicitud de un candado compartido por la transaccion el objeto O (XT (O ), respectivamente para candado exclusivo)
Transacciones
Octubre 2013
27 / 42
Con valores iniciales de A = 1000 y B = 500 permitido por el protocolo 2PL estricto: El siguiente plan no esta
T1 R (A), A=1000 W (A), A=900 T2
R (A), A=900 W (A), A=990 R (B ), B=500 W (B ), B=550 commit T2 R (B )= 550 W (B )= 650 commit T1
Transacciones
Octubre 2013
28 / 42
Transacciones
Octubre 2013
29 / 42
Transacciones
Octubre 2013
30 / 42
Protocolo 2PL
Existe una variante del protocolo 2PL estricto llamado 2PL que relaja la segunda regla del protocolo 2PL estricto puede entregar sus candados antes del nal de la En 2PL una transaccion (antes de commit o abort) transaccion no puede pedir candados En 2PL la segunda regla es: Una transaccion adicionales una vez que empieza a devolver sus candados El protocolo 2PL asegura que los grafos de dependencias de los planes sean ac clicos y por lo tanto solo permite planes conicto serializables
Transacciones
Octubre 2013
31 / 42
Protocolo 2PL
Transacciones
Octubre 2013
32 / 42
es inicializada cada vez que un usuario ejecuta una En SQL una transaccion sentencia SELECT, UPDATE, o CREATE TABLE permite bloquear objetos con diferentes niveles de granularidad, SQL tambien e.g. tuplas en vez de tablas T1 (en SQL): Supongamos la siguiente transaccion
Transacciones
Octubre 2013
34 / 42
Supongamos que SQL permite bloquear todas las tuplas que satisfacen la categoria= 8. Esto no previene que otra transaccion T2 inserte una condicion nueva tupla que satisfaga la condicion Entonces, si T1 selecciona nuevamente las tuplas con categor a igual a 8 el diferente resultado sera ejecuta Tal problema se denomina problema fantasma, en donde una transaccion una consulta dos veces y obtiene diferentes conjuntos de tuplas, a pesar de no haber modicado las tuplas Para prevenir este problema el SGBD debe bloquear todas las posibles tuplas T1 , entonces, la solucion en este que podr an estar involucradas en la transaccion caso es bloquear toda la tabla, pagando el costo de concurrencia
Transacciones
Octubre 2013
35 / 42
Transacciones
Octubre 2013
36 / 42
Interbloqueos
Estos ciclos entre transacciones se denominan interbloqueos El SGBD debe prevenir o detectar (y resolver) estas situaciones
Transacciones
Octubre 2013
37 / 42
Interbloqueos
Una forma usual de resolver los interbloqueos es usando un mecanismo de ha esperado un candado por mucho tiempo, se tiempos, i.e., si una transaccion se aborta asume que ha ocurrido un interbloqueo y la transaccion En la practica menos del 1 % de las transacciones se ve involucrada en un interbloqueo Los interbloqueos pueden prevenirse:
Bloqueando partes de los objetos, e.g. tuplas en vez de tablas completas puede mantener un candado Reduciendo el tiempo en que una transaccion Reduciendo la cantidad de objetos que son le dos y modicados
Transacciones
Octubre 2013
38 / 42
de Interbloqueos Deteccion
El administrador de candados en un SGBD es el encargado de administrar los permisos sobre objetos de la BD El administrador mantiene un grafo de esperas G (T ) para detectar interbloqueos que se construye de la siguiente manera:
activa es un nodo en G (T ) Cada transaccion esperando que Tj libere un candado Existe un arco desde Ti a Tj s y solo s Ti esta
pide un El administrador agrega arcos al grafo cada vez que una transaccion candado y elimina los arcos cuando las transacciones obtienen los candados
Transacciones
Octubre 2013
39 / 42
X (B ) W (B ) S (B ) S (C ) R (C ) X (C ) X (B ) X (A)
Transacciones
Octubre 2013
40 / 42
de Interbloqueos Solucion
El problema se resuelve abortando una de las transacciones involucradas en el ciclo y liberando todos sus candados de la transaccion a abortar puede realizarse en base a varios La eleccion criterios:
1 2 3 4
que posee menos candados La transaccion que ha avanzado menos en su ejecucion La transaccion que dista mucho de su nalizacion La transaccion etc.
Transacciones
Octubre 2013
41 / 42
de Interbloqueos Prevencion
un nivel de prioridad Se le otorga a cada transaccion Ti requiere un candado para el objeto A y una transaccion Tj Si una transaccion mantiene un candado conictivo para A el administrador de candados puede seguir cualquiera de las siguientes pol ticas:
1
Si Ti tiene mayor prioridad que Tj , entonces Ti espera a que Tj libere el candado. En caso contrario, Ti aborta Si Ti tiene mayor prioridad que Tj , entonces Tj se aborta. En caso contrario, Ti espera
Transacciones
Octubre 2013
42 / 42