15-transacciones

42
Administraci ´ on de Transacciones Base de Datos II onica Caniup ´ an [email protected] Universidad del B´ ıo-B´ ıo Octubre 2013

Upload: christopher-luis-arredondo-flores

Post on 22-Oct-2015

52 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 15-Transacciones

Administracion de TransaccionesBase de Datos II

Monica [email protected]

Universidad del Bıo-Bıo

Octubre 2013

Page 2: 15-Transacciones

Transacciones

Las transacciones son el fundamento de la ejecucion concurrente y larecuperacion de un fallo del sistema en un SGBD

Una transaccion se define como cualquier

Un SGBD tiene entrelaza las acciones de varias transacciones

El SGBD debe garantizar que el resultado de una ejecucion concurrente detransacciones sea equivalente (en su efecto sobre la BD) a alguna ejecucionsecuencial

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 2 / 42

Page 3: 15-Transacciones

Propiedades de las Transacciones

Desde el punto de vista de un SGBD, una transaccion es una serie deoperaciones de escritura y lectura a la BD

Un SGBD debe garantizar cuatro propiedades:1 La ejecucion de cada transaccion es atomica: o se realizan todas las acciones o no

se realiza ninguna2 Consistencia: las transacciones deben preservar la consistencia de la BD3 Aislamiento: las transacciones estan aisladas, o protegidas, de los efectos de otras

transacciones4 Durabilidad: si la transaccion finaliza exitosamente, sus efectos deben persistir

incluso si se produce una caıda del sistema

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 3 / 42

Page 4: 15-Transacciones

Acciones de una Transaccion

Las acciones que puede ejecutar una transaccion son: lectura y escritura deobjetos de la BD

Rt(O) denota lectura del objeto O por la transaccion tWt(O) denota escritura de O por tCada transaccion debe indicar como ultima accion:

commit (comprometer): indica que la transaccion termina satisfactoriamente, oabort (abortar): indica que la transaccion termina pero se deshacen los cambiosrealizados a la BD

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 4 / 42

Page 5: 15-Transacciones

Planes

Un plan de ejecucion (planificacion) es una lista de acciones (lectura, escritura,comprometer o abortar) de un conjunto de transacciones

El orden en el cual dos acciones de una transaccion T aparecen en un plan debeser el mismo orden en el que aparecen en T

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 5 / 42

Page 6: 15-Transacciones

Ejemplo: Plan

Consideremos los siguientes planes:

Plan no serialT1 T2

R(A)W (A)

R(B)W (B)

R(C)W (C)

commitT1

commitT2

Serial: T1 −T2

T1 T2

R(A)W (A)R(C)W (C)

commitT1

R(B)W (B)

commitT2

Si las acciones de diferentes transacciones no son intercaladas, i.e. lastransacciones son ejecutadas de inicio a fin, una por una, el plan se denominaplan serial

Para el ejemplo existen dos posibles planes seriales: T1 −T2 y T2 −T1

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 6 / 42

Page 7: 15-Transacciones

Ejecucion Concurrente de Transacciones

Los SGBD entrelazan las acciones de distintas transacciones para mejorar elrendimiento

Si una transaccion necesita leer desde disco, el SGBD podrıa empezar a procesarotra transaccion

Surge entonces el concepto de planes serializables

Un plan serializable sobre un conjunto S de transacciones que comprometen loscambios, es un plan cuyo efecto sobre cualquier instancia consistente de la BD segarantiza identico al de alguna planificacion secuencial sobre S

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 7 / 42

Page 8: 15-Transacciones

Ejemplo: Planes Serializables

Los siguientes planes son serializables, el primero produce el mismo efecto queejecutar T1 −T2, el segundo es equivalente a T2 −T1

T1 T2

R(A)W (A)

R(A)W (A)

R(B)W (B)

R(B)W (B)

commitT2

commitT1

T1 T2

R(A)W (A)

R(A)R(B)W (B)

W (A)R(B)W (B)

commitT2

commitT1

Las ejecuciones secuenciales pueden producir distintos resultados, pero todos sesuponen aceptables; el SGBD no garantiza cual de ellos sera el resultado de unaejecucion entrelazada

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 8 / 42

Page 9: 15-Transacciones

Problemas al Intercalar Transacciones

Dos acciones sobre el mismo objeto de la BD presentan conflicto si por lo menosuna de las acciones es una escritura

Existen tres tipos de conflictos entre dos transacciones T1 y T2:1 Conflicto de escritura-lectura (WR) o lectura de datos no comprometidos2 Conflicto de lectura-escritura (RW) o lecturas no repetidas3 Conflicto de escritura-escritura (WW) o sobre-escritura de datos no comprometidos

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 9 / 42

Page 10: 15-Transacciones

(1) Conflicto de escritura-lectura (WR)

El principal problema de WR es la lectura de datos no comprometidos, i.e. T2 leeun objeto que fue modificado por T1, pero que aun no ha sido comprometido

En tal caso, la lectura es conocida como lectura sucia

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 10 / 42

Page 11: 15-Transacciones

Ejemplo: Lectura Sucia

Consideremos las transacciones T1 y T2:

T1 transfiere 100 desde la cuenta A a la BT2 incrementa A y B por el 10%

Supongamos los valores iniciales A = 1000 y B = 500

T1 T2

R(A), A=1000W (A), A=900

R(A), A=900W (A), A=990R(B), B=500W (B), B=550

commitT2

R(B)= 550W (B)= 650commitT1

Este plan produce los valores A = 990y B = 650

T1 −T2 produce los valores A = 990 yB = 660

T2 −T1 produce A = 1000 y B = 650

El problema es que T2 lee el valor deA modificado por T1 pero que no hasido comprometido

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 11 / 42

Page 12: 15-Transacciones

Conflicto de escritura-lectura (WR)

Mas aun, T1 podrıa escribir algun 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

Ningun dano se produce si las transacciones son ejecutadas de manera serial, yaque T2 no vera tal inconsistencia

Una transaccion puede dejar la base de datos inconsistente por un perıodo detiempo, pero una vez comprometida la transaccion, la BD debe quedar en unestado consistente

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 12 / 42

Page 13: 15-Transacciones

(2) Conflicto de lectura-escritura (RW)

El principal problema de lectura-escritura es la lectura no repetida de datos, i.e.T2 modifica el valor de un objeto A que es leıdo por una transaccion T1, mientrasT1 esta aun en progreso

Si T1 vuelve a leer A, el valor sera diferente

Consideremos las transacciones T1 y T2, y sea A el numero de copias disponiblesde un libro

T1 lee A = 1T2 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!

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 13 / 42

Page 14: 15-Transacciones

(3) Conflicto de escritura-escritura (WW)

T2 sobre-escribe el valor de un objeto A que ya ha sido modificado por unatransaccion T1, mientras T1 todavıa esta en progreso

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 2000T2 asigna salarios iguales a 1000

El plan T1 −T2 asigna salarios iguales a 1000, T2 −T1 asigna salarios iguales a2000

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 14 / 42

Page 15: 15-Transacciones

Conflicto de escritura-escritura (WW)

Supongamos la siguiente ejecucion intercalada:

T1 T2

W (Pedro), Salario=1000W (Juan), Salario=2000

W (Juan), Salario=1000commitT2

W (Pedro), Salario=2000commitT1

El plan no produce salarios iguales para Juan y Pedro

Por lo tanto este plan no es serializable

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 15 / 42

Page 16: 15-Transacciones

Planes con Abort

Cuando una transaccion aborta, todas las acciones son deshechas y la BDvuelve al estado inicial

Un plan serializable sobre un conjunto de transacciones S es un plan cuyo efectosobre cualquier BD consistente es identico a alguna ejecucion serial sobre elconjunto de transacciones comprometidas en S

Esta definicion de plan serializable asume que las transacciones que abortandeben ser completamente deshechas, lo cual puede ser imposible en algunassituaciones

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 16 / 42

Page 17: 15-Transacciones

Ejemplo: Planes con Abort

Consideremos las transacciones T1 y T2:

T1 transfiere 100 desde la cuenta A a la BT2 incrementa A y B por el 10%

Supongamos los valores iniciales A = 1000 y B = 500T1 T2

R(A), A=1000W (A), A=900

R(A), A=900W (A), A=990R(B), B=500W (B), B=550

commitT2

abortT1

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 situacionpropagando el aborto de T1 en cascada y abortar T2

Pero T2 ya comprometio y sus acciones no pueden ser deshechas! Este plan noes recuperable

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 17 / 42

Page 18: 15-Transacciones

Planes Recuperables

En un plan recuperable las transacciones se comprometen solo despues de quese comprometen todas las transacciones de las cuales se han leıdo cambios

Si las transacciones leen solamente los cambios de transaccionescomprometidas, el plan no solo es recuperable, sino que puede abortar unatransaccion sin abortar otras transacciones en cascada (planes que evitanabortos en cascada)

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 18 / 42

Page 19: 15-Transacciones

Planes Conflicto Equivalentes

Dos planes son conflicto equivalentes si:Involucran el mismo conjunto de acciones de las mismas transacciones, yOrdenan cada par de acciones conflictivas de dos transacciones que comprometende la misma manera

Dos acciones estan en conflicto si operan sobre el mismo objeto y al menos unade ellas es escritura

Podemos cambiar el orden de acciones que no son conflictivas sin alterar elefecto del plan sobre la BD

Si dos planes son conflicto equivalentes, tienen el mismo efecto sobre la BD

Un plan es conflicto serializable si es conflicto equivalente con algun plan serial

Todo plan conflicto equivalente es serializable

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 19 / 42

Page 20: 15-Transacciones

Ejemplo: Planes Conflicto Equivalentes

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)El plan es conflicto equivalente a la ejecucion serial T1-T3-T2, y como consecuenciael plan es serializable

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 20 / 42

Page 21: 15-Transacciones

Ejemplo: Planes Conflicto Equivalentes

Consideremos el siguiente plan:R2(y),R1(x),R3(y),R2(x),W2(y),W1(x),R3(x)

Podemos reordenar las operaciones de la siguiente manera:

La lectura de T1 puede ser localizada junto con la escritura de T1R2(y),R3(y),R2(x),W2(y),R1(x),W1(x),R3(x)Luego, las operaciones de T2 se reordenan de la siguiente forma:R3(y),R2(y),R2(x),W2(y),R1(x),W1(x),R3(x)Sin embargo, no podemos mover R3(y) ni R3(x) sin causar conflictos, por lo tantoeste plan no es conflicto equivalente a ninguna ejecucion serial de las transacciones

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 21 / 42

Page 22: 15-Transacciones

Grafos de Precedencia

Es posible capturar los potenciales conflictos entre transacciones de un plan enun grafo de precedencia

El grafo de precedencia G(S) para un plan S se construye de la siguientemanera:

Cada transaccion que compromete en S es un nodo en G(S)Existe un arco desde Ti a Tj si una accion de Ti precede y es conflictiva con algunaaccion de Tj

Un plan S es conflicto serializable sı y solo sı su grafo de precedencia es acıclico(no contiene ciclos)

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 22 / 42

Page 23: 15-Transacciones

Ejemplo: Grafo de Precedencia

El siguiente plan no es conflicto equivalente. Su grafo de precedencia G(S)contiene ciclos:

T1 T2 T3

R(A)W (A)

commitT2

W (A)commitT1

W (A)commitT3

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 23 / 42

Page 24: 15-Transacciones

Control de Concurrencia Basado en Bloqueos

Un SGBD solo debe permitir la ejecucion de planes que son serializables yrecuperables

Para ello, el SGBD utiliza un protocolo de bloqueos

Tenemos dos tipos de bloqueos (candados):

Exclusivos XCompartidos S (shared)

El protocolo de bloqueo mas usado se denomina bloqueo exclusivo de dos fases(2PL exclusivo)

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 24 / 42

Page 25: 15-Transacciones

Bloqueo Exclusivo de Dos Fases

El protocolo 2PL exclusivo (estricto) tiene dos reglas:1 Si una transaccion T quiere leer (respectivamente, modificar) un objeto, primero

solicita un candado (bloqueo) compartido (respectivamente, exclusivo) sobre el objeto2 Todos los candados (bloqueos) concedidos a una transaccion se liberan cuando la

transaccion se completa

Obviamente, si una transaccion tiene un candado exclusivo sobre un objeto,tambien puede leer el objeto

Una transaccion que requiere un candado es suspendida hasta que el SGBDpueda otorgar el candado

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 25 / 42

Page 26: 15-Transacciones

Bloqueo Exclusivo de Dos Fases

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 26 / 42

Page 27: 15-Transacciones

Bloqueo Exclusivo de Dos Fases

Si una transaccion tiene un candado exclusivo sobre un objeto, no puede haberotra transaccion con un candado exclusivo o compartido sobre el objeto

La siguiente tabla resume la entrega de candados:

X SX NO NOS NO SI

El protocolo 2PL estricto permite que solo los planes seguros sean ejecutados yasegura que el grafo de precedencia de cualquier plan permitido sea acıclico

ST (O) denota la solicitud de un candado compartido por la transaccion T sobreel objeto O (XT (O), respectivamente para candado exclusivo)

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 27 / 42

Page 28: 15-Transacciones

Ejemplo: Protocolo 2PL Estricto

Consideremos las transacciones T1 y T2:

T1 transfiere 100 desde la cuenta A a la BT2 incrementa A y B por el 10%

Con valores iniciales de A = 1000 y B = 500

El siguiente plan no esta permitido por el protocolo 2PL estricto:

T1 T2

R(A), A=1000W (A), A=900

R(A), A=900W (A), A=990R(B), B=500W (B), B=550

commitT2

R(B)= 550W (B)= 650commitT1

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 28 / 42

Page 29: 15-Transacciones

Ejemplo: Protocolo 2PL Estricto

Con el protocolo 2PL estricto el plan se ejecuta de la siguiente manera:

T1 T2

X(A)R(A), A=1000W (A), A=900

X(B)R(B)= 500W (B)= 600commitT1

X(A)R(A), A=900W (A), A=990

X(B)R(B), B=600W (B), B=660

commitT2

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 29 / 42

Page 30: 15-Transacciones

Ejemplo: Protocolo 2PL Estricto

El protocolo 2PL estricto tambien permite la ejecucion de transaccionesintercaladas:

T1 T2

S(A)R(A)

S(A)R(A)X(B)R(B)W (B)

commitT2

X(C)R(C)W (C)

commitT1

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 30 / 42

Page 31: 15-Transacciones

Protocolo 2PL

Existe una variante del protocolo 2PL estricto llamado 2PL que relaja la segundaregla del protocolo 2PL estricto

En 2PL una transaccion puede entregar sus candados antes del final de latransaccion (antes de commit o abort)

En 2PL la segunda regla es: Una transaccion no puede pedir candadosadicionales una vez que empieza a devolver sus candados

El protocolo 2PL asegura que los grafos de dependencias de los planes seanacıclicos y por lo tanto solo permite planes conflicto serializables

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 31 / 42

Page 32: 15-Transacciones

Protocolo 2PL

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 32 / 42

Page 33: 15-Transacciones

Ejemplo: Protocolo 2PL

Un plan aceptado por 2PL pero no por 2PL estricto:

T1 T2

X(A)R(A)W (A)X(B)

libera X(A)X(A)R(A)W (A)X(C)W (C)

libera X(A)libera X(C)commitT2

W (B)libera X(B)commitT1

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 33 / 42

Page 34: 15-Transacciones

Soporte de Transacciones en SQL

En SQL una transaccion es inicializada cada vez que un usuario ejecuta unasentencia SELECT, UPDATE, o CREATE TABLE

SQL tambien permite bloquear objetos con diferentes niveles de granularidad,e.g. tuplas en vez de tablas

Supongamos la siguiente transaccion T1(en SQL):SELECT MIN(edad)FROM NavegantesWHERE categoria = 8

¿Que objetos deberıan ser bloqueados?

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 34 / 42

Page 35: 15-Transacciones

Soporte de Transacciones en SQL

Supongamos que SQL permite bloquear todas las tuplas que satisfacen lacondicion categoria= 8. Esto no previene que otra transaccion T2 inserte unanueva tupla que satisfaga la condicion

Entonces, si T1 selecciona nuevamente las tuplas con categorıa igual a 8 elresultado sera diferente

Tal problema se denomina problema fantasma, en donde una transaccion ejecutauna consulta dos veces y obtiene diferentes conjuntos de tuplas, a pesar de nohaber modificado las tuplas

Para prevenir este problema el SGBD debe bloquear todas las posibles tuplasque podrıan estar involucradas en la transaccion T1, entonces, la solucion en estecaso es bloquear toda la tabla, pagando el costo de concurrencia

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 35 / 42

Page 36: 15-Transacciones

Soporte de Transacciones en SQL

SQL permite elegir algunos niveles de aislamiento:

READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE

Con los siguientes efectos sobre las transacciones:

Nivel Lectura sucia Lectura no repetida P. FantasmaREAD UNCOMMITTED es posible es posible es posibleREAD COMMITTED NO es posible es posibleREPEATABLE READ NO NO es posibleSERIALIZABLE NO NO NO

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 36 / 42

Page 37: 15-Transacciones

Interbloqueos

Supongamos la siguiente situacion:

T1 T2

X(A)R(A)W (A)

X(B)R(B)W (B)

Solicita X(B)Solicita X(A)

Estos ciclos entre transacciones se denominan interbloqueos

El SGBD debe prevenir o detectar (y resolver) estas situaciones

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 37 / 42

Page 38: 15-Transacciones

Interbloqueos

Una forma usual de resolver los interbloqueos es usando un mecanismo detiempos, i.e., si una transaccion ha esperado un candado por mucho tiempo, seasume que ha ocurrido un interbloqueo y la transaccion se aborta

En la practica menos del 1% de las transacciones se ve involucrada en uninterbloqueo

Los interbloqueos pueden prevenirse:

Bloqueando partes de los objetos, e.g. tuplas en vez de tablas completasReduciendo el tiempo en que una transaccion puede mantener un candadoReduciendo la cantidad de objetos que son leıdos y modificados

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 38 / 42

Page 39: 15-Transacciones

Deteccion de Interbloqueos

El administrador de candados en un SGBD es el encargado de administrar lospermisos sobre objetos de la BD

El administrador mantiene un grafo de esperas G(T ) para detectar interbloqueosque se construye de la siguiente manera:

Cada transaccion activa es un nodo en G(T )Existe un arco desde Ti a Tj sı y solo sı Ti esta esperando que Tj libere un candado

El administrador agrega arcos al grafo cada vez que una transaccion pide uncandado y elimina los arcos cuando las transacciones obtienen los candados

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 39 / 42

Page 40: 15-Transacciones

Ejemplo: Deteccion de Interbloqueos

Supongamos la siguiente situacion:

T1 T2 T3 T4

S(A)R(A)

X(B)W (B)

S(B)S(C)R(C)

X(C)X(B)

X(A)

El Grafo G(T ) antes y despues del interbloqueo:

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 40 / 42

Page 41: 15-Transacciones

Solucion de Interbloqueos

El problema se resuelve abortando una de las transacciones involucradas en elciclo y liberando todos sus candados

La eleccion de la transaccion a abortar puede realizarse en base a varioscriterios:

1 La transaccion que posee menos candados2 La transaccion que ha avanzado menos en su ejecucion3 La transaccion que dista mucho de su finalizacion4 etc.

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 41 / 42

Page 42: 15-Transacciones

Prevencion de Interbloqueos

Se le otorga a cada transaccion un nivel de prioridad

Si una transaccion Ti requiere un candado para el objeto A y una transaccion Tj

mantiene un candado conflictivo para A el administrador de candados puedeseguir cualquiera de las siguientes polıticas:

1 Si Ti tiene mayor prioridad que Tj , entonces Ti espera a que Tj libere el candado. Encaso contrario, Ti aborta

2 Si Ti tiene mayor prioridad que Tj , entonces Tj se aborta. En caso contrario, Tiespera

Base de Datos II (Universidad del Bıo-Bıo) Transacciones Octubre 2013 42 / 42