Está en la página 1de 32

1

V. Transacciones

Transacciones

2
V. Transacciones

1. Concepto de transaccin
Una transaccin es una unidad de la ejecucin de un
programa que accede y posiblemente actualiza
varios elementos de datos.
Para asegurar la integridad de los datos se necesita
que el sistema de base de datos mantenga las
siguientes propiedades de las transacciones:

Atomicidad (Atomicity)
Consistencia (Consistency)
Aislamiento (Isolation)
Durabilidad (Durability)

3
V. Transacciones

Ejemplo
Sea Ti una transaccin para transferir 50 de
la cuenta A a la cuenta B. Se puede definir dicha
transaccin como: oConsistencia: A+B no debe variar
oAtomicidad: Las inconsistencias
Ti: leer(A);
temporales deben quedar ocultas hasta
llegar a un estado consistente.
A := A 50;
oDurabilidad: Una vez terminada la
escribir(A);
transaccin exitosamente las
modificaciones permanecen.
leer(B);
oAislamiento: asegura que el resultado
obtenido al ejecutar concurrentemente las
B := B + 50;
transacciones es un estado del sistema
escribir(B).
equivalente a uno obtenido al ejecutar una
tras otra en algn orden.

4
V. Transacciones

2. Estados de una transaccin

5
V. Transacciones

3. Implementacin de la atomicidad y
la durabilidad
El componente de gestin de recuperaciones
de un sistema de base de datos implementa el
soporte para la atomicidad y la durabilidad.
Un esquema simple pero extremadamente
ineficiente, es el denominado copia en la sombra.
Se basa en hacer copias de la base de datos,
denominadas copias sombra; asume que slo
una transaccin est activa en cada momento.

6
V. Transacciones

7
V. Transacciones

4. Ejecuciones concurrentes
Los sistemas de procesamiento de transacciones
permiten normalmente la ejecucin de varias
transacciones concurrentemente. Esto provoca
complicaciones en la consistencia de los mismos,
por lo cual es mucho ms sencillo exigir que las
transacciones se ejecuten secuencialmente.
Existen dos razones para permitir la concurrencia:
Productividad y utilizacin de recursos mejoradas:
CPU y L/E en discos son operaciones que se pueden
realizar en paralelo.
Tiempo de espera reducido: si operan sobre partes
distintas de la BD se pueden ejecutar varias
transacciones compartiendo ciclos de CPU

8
V. Transacciones

Esquemas de control de concurrencia


El sistema de base de datos
debe controlar la interaccin
entre las transacciones
concurrentes para evitar que
se destruya la consistencia de
la base de datos. Esto se lleva a
cabo a travs de los
esquemas de control de
concurrencia.
Sean T1 y T2 dos
transacciones para transferir
fondos de una cuenta A a una
cuenta B.

T1: Transfiere 50 soles de A a B

T2: Transfiere el 10% de saldo de A a B

9
V. Transacciones

Planificacin 1: Plan secuencial


T2 sigue a T1

Planificacin 2: Plan secuencial


T1 sigue a T2

PLANIFICACION: orden cronolgico en el que se ejecutan las instrucciones en el sistema.

10
V. Transacciones

Planificacin 3: Plan concurrente


equivalente a planificacin 1

Planificacin 4: Plan concurrente

11
V. Transacciones

Componente de control de
concurrencia
Si se deja el control de la ejecucin concurrente
completamente al sistema operativo, son posibles
muchas planificaciones, incluyendo las que dejan a
la base de datos en un estado inconsistente, como la
que se acaba de ver en la planificacin 4.
Es una tarea del sistema de base de datos asegurar
que cualquier planificacin que se ejecute lleva a la
base de datos a un estado consistente. El
componente del sistema de base de datos que realiza
esta tarea se denomina componente de control
de concurrencia.

12
V. Transacciones

5. Secuencialidad
El sistema de base de datos debe
controlar la ejecucin concurrente de
las transacciones para asegurar que
el estado de la base sigue siendo
consistente.
Puesto que las transacciones son
programas, es difcil calcular cules
son las operaciones exactas que
realiza una transaccin y cmo
interaccionan las operaciones de
varias transacciones. Por este motivo
slo se considerarn las operaciones
Leer(Q) y Escribir (Q) sobre el
elemento de datos Q y se omiten las
operaciones intermedias.

13
V. Transacciones

Secuencialidad en cuanto a conflictos


Considrese una planificacin P en la cual hay dos
instrucciones consecutivas Ii e Ij, pertenecientes a
las transacciones Ti y Tj respectivamente (i j). Si
Ii e Ij se refieren a distintos elementos de datos se
pueden intercambiar Ii e Ij sin afectar al resultado
de cualquier instruccin de la planificacin. Sin
embargo, si Ii e Ij se refieren al mismo elemento Q
entonces el orden de los dos pasos puede ser
importante.
Considerar 4 casos:

14
V. Transacciones

CASO 1:
Ii = leer(Q), Ij = leer(Q).
CASO 2:
Ii = leer(Q), Ij = escribir(Q).
CASO 3:
Ii = escribir(Q), Ij = leer(Q).
CASO 4:
Ii = escribir(Q), Ij = escribir(Q).

15
V. Transacciones

Instrucciones conflictivas
Se dice que Ii e Ij estn en
conflicto si existen operaciones de
diferentes transacciones sobre el
mismo elemento de datos, y al
menos una de esas instrucciones es
una operacin escribir.
En el ejemplo, la instruccin
escribir(A) de T1 est en conflicto
con la instruccin leer(A) de T2. Sin
embargo, la instruccin escribir(A)
de T2 no est en conflicto con la
instruccin leer(B) de T1, ya que las
dos instrucciones acceden a
diferentes elementos de datos.

16
V. Transacciones

Planificaciones equivalentes en cuanto


a conflictos
Sean Ii e Ij instrucciones
consecutivas de una
planificacin P. Si Ii e Ij
son instrucciones de
transacciones diferentes
y adems Ii e Ij no estn
en conflicto, entonces se
puede cambiar el orden
de Ii e Ij para obtener
una nueva planificacin
P(equivalente a P).

17
V. Transacciones

Si una planificacin P se puede transformar en otra P por medio de


una serie de intercambios de instrucciones no conflictivas, se dice que
P y P son equivalentes en cuanto a conflictos.

18
V. Transacciones

Secuencialidad en cuanto a conflictos


Se dice que una planificacin P es secuenciable
en cuanto a conflictos si es equivalente en cuanto
a conflictos a una planificacin secuencial.
Esta planificacin no es
secuenciable en cuanto a conflictos,
ya que no es equivalente ni a la
planificacin secuencial
<T3,T4> ni a <T4,T3>.

19
V. Transacciones

Planificaciones que producen el mismo resultado


sin ser equivalentes en cuanto a conflictos.

Esta planificacin no es
equivalente en cuanto a
conflictos a la planificacin
secuencial <T1,T5>, pero
produce los mismos resultados

Existen definiciones de equivalencia de planificaciones que son menos


rigurosas que la de equivalencia en cuanto a conflictos.

20
V. Transacciones

Equivalencia en cuanto a vistas


Considrense dos planificaciones, P y P, en las cuales participa
el mismo conjunto de transacciones. Se dice que las
planificaciones P y P son equivalentes en cuanto a vistas si se
cumplen las tres condiciones siguientes:
1.
2.

3.

Para todo elemento de datos Q, si la transaccin Ti lee el valor


inicial de Q en la planificacin P, entonces Ti debe leer tambin el
valor inicial de Q en la planificacin P.
Para todo elemento de datos Q, si la transaccin Ti ejecuta leer(Q)
en la planificacin P y el valor lo ha producido la transaccin Tj (si
existe dicha transaccin) entonces, en la planificacin P, la
transaccin Ti debe leer tambin el valor de Q que haya producido
la transaccin Tj.
Para todo elemento de datos Q, la transaccin (si existe) que
realice la ltima operacin escribir(Q) en la planificacin P, debe
realizar la ltima operacin escribir(Q) en la planificacin P.

21
V. Transacciones

Dos transacciones que no son equivalentes en cuanto a vistas

22
V. Transacciones

Dos transacciones equivalentes en cuanto a vistas

23
V. Transacciones

Secuencialidad en cuanto a vistas


El concepto de equivalencia en cuanto a vistas lleva
al concepto de secuencialidad en cuanto a vistas. Se
dice que la planificacin P es secuenciable en
cuanto a vistas si es equivalente en cuanto a
vistas a una planificacin secuencial.
Esta planificacin es
secuenciable en cuanto a vistas a
la planificacin secuencial
<T3,T4, T6>

24
V. Transacciones

Toda planificacin secuenciable en cuanto a


conflictos es secuenciable en cuanto a vistas, pero
existen planificaciones secuenciables en cuanto a
vistas que no son secuenciables en cuanto a
conflictos.
La planificacin anterior no es secuenciable en
cuanto a conflictos, puesto que para todo par de
instrucciones stas estn en conflicto y, por tanto,
no es posible ningn intercambio de instrucciones.
Obsrvese tambien que las transacciones T4 y T6
realizan operaciones escribir(Q) sin haber realizado
ninguna operacin leer(Q). Este tipo de escrituras
se denominan escrituras a ciegas. Las escrituras
a ciegas aparecen en toda planificacin secuenciable
en cuanto a vistas que no sea secuenciable en cuanto
a conflictos.

25
V. Transacciones

6. Recuperabilidad
Si la transaccin Ti falla, por la razn que sea, es
necesario deshacer el efecto de dicha transaccin
para asegurar la propiedad de atomicidad de la
misma.
En un sistema que permita la concurrencia es
necesario asegurar tambin que toda transaccin Tj
que dependa de Ti (es decir, Tj lee datos que ha
escrito Ti) se aborta tambin.
Para alcanzar esta garanta, es necesario poner
restricciones al tipo de planificaciones permitidas en
el sistema.

26
V. Transacciones

Planificaciones recuperables
Una planificacin
recuperable es aquella
en la que para todo par
de transacciones Ti y Tj
tales que Tj lee elementos
de datos que a escrito
previamente Ti, la
operacin comprometer
de Ti aparece antes que
la de Tj.

T8 abortada

T9 comprometida

Planificacin no recuperable

27
V. Transacciones

Planificaciones sin cascada


Una planificacin sin
cascada es aquella para
la que todo par de
transacciones Ti y Tj tales
que Tj lee un elemento de
datos que ha escrito
previamente Ti, la
operacin comprometer
de Ti aparece antes que
la operacin de lectura de
Tj .

T10 aborta

Retroceso en cascada

28
V. Transacciones

7. Comprobacin de la secuencialidad
Cuando se disean esquemas de control de
concurrencia hay que demostrar que las
planificaciones que genera el esquema son
secuenciables.
Para esto 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 arcos.

29
V. Transacciones

Grafo de precedencia
El conjunto de vrtices consiste en todas las
transacciones que participan en la planificacin.
El conjunto de arcos consiste en todos los arcos
Ti  Tj para los cuales se dan una de las tres
condiciones siguientes:
1. Ti ejecuta escribir(Q) antes de que Tj ejecute leer(Q).
2. Ti ejecuta leer(Q) antes de que Tj ejecute
escribir(Q).
3. Ti ejecuta escribir(Q) antes de que Tj ejecute
escribir(Q).

30
V. Transacciones

Si existe un arco Ti  Tj en el grafo de precedencia,


entonces en toda planificacin secuencial P equivalente
a P, Ti debe aparecer antes de Tj.

31
V. Transacciones

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

32
V. Transacciones

Ordenacin topolgica
El orden de
secuencialidad se puede
obtener a travs de la
ordenacin topolgica, la
cual determina un orden
lineal que consiste en el
orden parcial del grafo de
precedencia. En general
se pueden obtener
muchos rdenes lineales
posibles a travs de la
ordenacin topolgica