Sie sind auf Seite 1von 29

1

GESTIN DE DATOS 2012


- Clase 8 -

Transacciones en entornos concurrentes


2

Los sistemas de procesamiento de transacciones permiten normalmente la ejecucin de varias transacciones concurrentemente. Permitir varias transacciones que actualizan concurrentemente los datos provoca complicaciones en la consistencia de los mismos.
La propiedad de aislamiento en entornos monousuarios se obtiene automticamente, y no permite que ms de una transaccin est activa en cada momento.

Transacciones en entornos concurrentes


3

Asegurar la consistencia a pesar de la ejecucin concurrente de las transacciones requiere un trabajo extra. Sin embargo, existen dos buenas razones para permitir la concurrencia:
1.

Productividad y utilizacin de recursos mejoradas. Una transaccin implica operaciones de E/S y operaciones de CPU. Mientras una transaccin ejecuta una lectura/escritura, otra puede ejecutarse en la CPU. Esto incrementa el nmero de transacciones que se pueden ejecutar en un tiempo dado (productividad).

Transacciones en entornos concurrentes


4

Anlogamente, la utilizacin del procesador y del disco aumenta tambin; el procesador y el disco estn menos tiempo desocupados o sin hacer ningn trabajo til
2.

Tiempo de espera reducido. Debe haber una mezcla de transacciones cortas y largas. Si las transacciones se ejecutan secuencialmente, la transaccin corta debe esperar a que la transaccin larga anterior se complete, lo cual puede llevar a un retardo impredecible en la ejecucin de la transaccin.

Ejecucin concurrente
5

Problemas de la concurrencia
6

Problemas de la concurrencia
7

Problemas de la concurrencia
8

Problemas de la concurrencia
9

Problemas de la concurrencia
10

Transacciones en entornos concurrentes


11

Supongamos que en un banco se intentan realizar, simultneamente, las siguientes transacciones:


T1 Leer (cuentaA) cuentaA = cuentaA 1000 Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + 1000 Escribir (cuentaB)

T2 Leer (cuentaA) descuento = cuentaA * 0,2 cuentaA = cuentaA descuento Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + descuento Escribir (cuentaB)

Transacciones en entornos concurrentes


12

Supongamos que la ejecucin de T1 y T2 se realiza en un entorno libre de fallos; por lo tanto, cada transaccin comienza, se ejecuta y termina logrando atomicidad. Para cuentaA= 4000 y cuentaB = 1000,

Cules sern sus valores si ejecutamos T1 y luego T2? Cules sern sus valores si ejecutamos T2 y luego T1?

Difieren en el resultado final, pero se mantiene la BD en estado de consistencia.

Transacciones en entornos concurrentes


13

En un entorno concurrente, es necesario establecer un criterio de ejecucin para no afectar la integridad de la Base de Datos.

Planificacin: Orden cronolgico de ejecucin de las transacciones.

En general, un entorno concurrente con N transacciones en ejecucin puede generar N! planificaciones en serie diferentes. Ejemplo.

Transacciones en entornos concurrentes


14

Siguiendo con el ejemplo del banco:

T1 Leer (cuentaA) cuentaA = cuentaA 1000 Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + 1000 Escribir (cuentaB)

T2 Leer (cuentaA) descuento = cuentaA * 0,2 cuentaA = cuentaA descuento Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + descuento Escribir (cuentaB)

Transacciones en entornos concurrentes


15

Planificacin 1:
T1
Leer (cuentaA) cuentaA = cuentaA 1000 Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + 1000 Escribir (cuentaB) Leer (cuentaA) descuento = cuentaA * 0,2 cuentaA = cuentaA descuento Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + descuento Escribir (cuentaB)

T2

Transacciones en entornos concurrentes


16

Planificacin 2:
T1 T2
Leer (cuentaA) descuento = cuentaA * 0,2 cuentaA = cuentaA descuento Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + descuento Escribir (cuentaB) Leer (cuentaA) cuentaA = cuentaA 1000 Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + 1000 Escribir (cuentaB)

Transacciones en entornos concurrentes


17

Hasta el momento, una planificacin tiene las siguientes caractersticas: Involucra todas las instrucciones de las transacciones. Conservan el orden de ejecucin de estas transacciones. Esto significa que cada transaccin debe ser analizada como un todo, cuando una transaccin comienza, hasta que no finalice, ninguna otra puede iniciar. Esto garantiza la secuencialidad en la ejecucin y, por ende, la propiedad de aislamiento.

Transacciones en entornos concurrentes


18

Nuevamente el problema se presenta porque con esta solucin se demora mucho. Las planificaciones para un entorno concurrente no deben ser necesariamente en serie. Cuando la ejecucin de una transaccin no afecta el desempeo de otra transaccin, ambas pueden ejecutarse concurrentemente sin afectar la propiedad de aislamiento. Ejemplo.

Transacciones en entornos concurrentes


19

Si T1 y T2 se ejecutan en serie, se garantiza la propiedad de aislamiento. Veamos la siguiente planificacin concurrente:


T1 T2

Leer (cuentaA) cuentaA = cuentaA 1000 Escribir (cuentaA)

Leer (cuentaA) descuento = cuentaA * 0,2 cuentaA = cuentaA descuento Escribir (cuentaA)

Leer (cuentaB) cuentaB = cuentaB + 1000 Escribir (cuentaB)

Leer (cuentaB) cuentaB = cuentaB + descuento Escribir (cuentaB)

Transacciones en entornos concurrentes


20

Qu ocurre con la siguiente ejecucin concurrente de T1 y T2?


T1
Leer (cuentaA) cuentaA = cuentaA 1000

T2
Leer (cuentaA) descuento = cuentaA * 0,2 cuentaA = cuentaA descuento Escribir (cuentaA) Leer (cuentaB)

Escribir (cuentaA) Leer (cuentaB) cuentaB = cuentaB + 1000 Escribir (cuentaB)

cuentaB = cuentaB + descuento Escribir (cuentaB)

Transacciones en entornos concurrentes


21

An bajo condiciones libres de fallo, la ejecucin concurrente de T1 y T2 puede dejar la Base de Datos en un estado de inconsistencia.

Si se deja el control de la ejecucin concurrente completamente al sistema operativo son posibles muchas planificaciones, incluyendo las que dejan a la BD en un estado inconsistente. Es tarea del componente de control de concurrencia del sistema de BD asegurar que cualquier planificacin que se ejecute lleva a la BD a un estado consistente.

Transacciones serializables
22

Por lo tanto, no todas las planificaciones concurrentes son vlidas. Una planificacin concurrente, para que sea vlida, debe equivaler a una planificacin serie. Si se puede demostrar que la ejecucin concurrente tiene el mismo resultado que un planificacin serie, entonces la planificacin concurrente es vlida. Slo las instrucciones READ y WRITE deben considerarse para realizar cualquier tipo de anlisis.

Transacciones serializables
23

Si las instrucciones operan sobre datos diferentes, no generan conflicto. Supongamos I1 e I2 instrucciones de T1 y T2 respectivamente que operan sobre el dato D.

Si I1=READ(D) e I2=READ(D), no hay conflicto. Si I1=READ(D) e I2=WRITE(D), hay conflicto. Si I1=WRITE(D) e I2=READ(D), hay conflicto. Si I1=WRITE(D) e I2=WRITE(D), hay conflicto.

En conclusin, dos instrucciones son conflictivas si operan sobre el mismo dato, y al menos una de ellas es una operacin de escritura.

Transacciones serializables
24

Dos planificaciones, P y P, se denominan equivalentes en cuanto a conflictos, cuando P se logra a partir del intercambio de instrucciones no conflictivas de P.

Una planificacin P es serializable en cuanto a conflictos si es equivalente en cuanto a conflictos a una planificacin en serie.

Transacciones serializables
25

Ejercicio 1: Dada la siguiente planificacin, presentar dos planificaciones equivalentes en cuanto a conflictos.
T1
Leer (cuentaA) Escribir (cuentaA) Leer (cuentaA) Escribir (cuentaA) Leer (cuentaB) Escribir (cuentaB) Leer (cuentaB) Escribir (cuentaB)

T2

Transacciones serializables
26

Ejercicio 2: A partir de las siguientes transacciones, con el requisito de consistencia X=0 o Y=0 y siendo los valores iniciales X=Y=0:
a)

b)

Armar las posibles planificaciones en serie. Armar una ejecucin concurrente que produzca una planificacin no serializable.
T2: leer (Y) leer(X) if Y=0 then X:=X+1 escribir(X)

T1: leer (X) leer(Y) if X=0 then Y:=Y+1 escribir(Y)

Transacciones serializables
27

Veamos un mtodo simple y eficiente para determinar si una planificacin P es serializable en cuanto a conflictos.

Se construye un grafo dirigido, llamado grafo de precedencia para P. Este grafo consiste en un par G = (V, A) siendo V un conjunto de vrtices y A un conjunto de aristas.
El conjunto de vrtices consiste de todas las transacciones de P.

Transacciones serializables
28

El conjunto de aristas consiste en todos los arcos Ti Tj para los cuales se dan una de las tres condiciones siguientes:
Ti

ejecuta un write(q) antes que Tj un read(q) Ti ejecuta un write(q) antes que Tj un write(q) Ti ejecuta un read(q) antes que Tj un write(q)

Si el grafo de precedencia de P tiene un ciclo, entonces la planificacin P no es serializable en cuanto a conflictos. Si el grafo no contiene ciclos, entonces la planificacin P es serializable en cuanto a conflictos.

Transacciones serializables
29

T1

T2

T1

T2

CICLO

Das könnte Ihnen auch gefallen