Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Concurrencias - Serializacion
Concurrencias - Serializacion
Control de la concurrencia
Objetivos
Conocer la problemtica asociada a la concurrencia
de transacciones en los sistemas de bases de datos
Entender el significado de la serializabilidad y su
aplicacin al control de la concurrencia
Comprender algunas tcnicas para el control de la
concurrencia empleadas por los sistemas gestores
de bases de datos
7. Control de la concurrencia
Contenidos
1.
2.
3.
4.
7. Control de la concurrencia
Bibliografa
[CB 2005] Connolly, T.; Begg C.: Sistemas de bases de
datos. 4 Edicin. Pearson Educacin. Addison Wesley.
(Cap. 20)
[EN 2002] Elmasri, R.; Navathe, S.B.: Fundamentos de
Sistemas de Bases de Datos. 3 Edicin. AddisonWesley. (Cap. 19 y 20)
[EN 1997] Elmasri, R.; Navathe, S.B.: Sistemas de bases de
datos. Conceptos fundamentales. 2 Edicin.
Addison-Wesley Iberoamericana. (Cap. 17 y 18)
7.1 Introduccin
Los sistemas de bases de datos, segn el nmero de
usuarios que pueden utilizarlos de forma
concurrente, se clasifican en sistemas monousuario
y multiusuario
Varios usuarios pueden usar un mismo equipo a la
vez gracias a la multiprogramacin: el computador
puede procesar al mismo tiempo varias
transacciones
Si el equipo tiene varias CPU, es posible el procesamiento
simultneo (paralelo) de transacciones
Si slo hay una CPU, el SO de multiprogramacin reparte
el tiempo de CPU entre las transacciones:
ejecucin concurrente intercalada
modelo
que supondremos
4
Tema 7. Control de
la concurrencia
7.1 Introduccin
Varias transacciones introducidas por usuarios,
que se ejecutan de manera concurrente, pueden
leer/modificar los mismos elementos almacenados
en la base de datos
Razones para permitir la concurrencia:
Aumentar la productividad: nmero de transacciones
ejecutadas por minuto.
Aumentar la utilizacin de la CPU (menos tiempo ociosa) y
Control del disco.
Reducir el tiempo medio de respuesta de transacciones (las
pequeas no esperan a las grandes).
Transaccin T2
leer_elemento(X);
X:= X-N;
escribir_elemento(X);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y);
leer_elemento(X);
X:= X+M;
escribir_elemento(X);
T2
leer_elemento(X);
X:= X-N;
leer_elemento(X);
X:= X+M;
escribir_elemento(X
);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y
);
Tema 7. Control de la concurrencia
escribir_elemento(X
);
El elemento X tiene un valor
incorrecto porque su
actualizacin por T1 se
perdi (se sobreescribi)
8
leer_elemento(X);
X:= X-N;
escribir_elemento(X
);
T2
leer_elemento(X);
X:= X+M;
escribir_elemento(X
);
leer_elemento(X);
X:= X-N;
escribir_elemento(X
);
suma:=0;
leer_elemento(A)
;
suma:=
suma+A;
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y
Tema 7. Control );
de la concurrencia
leer_elemento(X)
;
suma:=
suma+X;
leer_elemento(Y)
;
suma:= suma+Y;
T3 lee X despus de
restar N, pero lee Y
antes de sumar N, as
que el resultado es un
resumen incorrecto
(discrepancia de N)
10
T4
leer_elemento(X);
X:= X-N;
escribir_elemento(X
);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y
Tema 7. Control de la concurrencia
);
leer_elemento(X
);
T4 lee X antes de
restar N
leer_elemento(X
);
T4 lee X despus
de restar N
11
7.2 Serializabilidad
Motivacin
Objetivo de un protocolo de control de concurrencia:
Planificar las transacciones de forma que no ocurran
interferencias entre ellas, y as evitar la aparicin de
los problemas mencionados
T1
leer_elemento(X);
X:= X-N;
escribir_elemento(X
);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y
Planificacin
B
);
T2
leer_elemento(X);
X:= X+M;
escribir_elemento(X)
;
12
7.2 Serializabilidad
Motivacin
Pero el objetivo de un SGBD multiusuario tambin es
maximizar el grado de concurrencia del sistema
Si se permite la intercalacin de operaciones,
existen muchos rdenes posibles de ejecucin de las
T1
T2
T1 transacciones
T2
leer_elemento(X);
X:= X-N;
leer_elemento(X);
X:= X+M;
escribir_elemento(X
);
leer_elemento(Y);
escribir_elemento(X)
;
Y:=Y+N;
escribir_elemento(Y
Planificacin
C: actualizacin perdida!
);
leer_elemento(X);
X:= X-N;
escribir_elemento(X
);
leer_elemento(X);
X:= X+M;
escribir_elemento(X)
;
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y
Planificacin
D: correcta!
);
Existe algn modo de identificar las ejecuciones que est garantizado que
protegen la consistencia de la base de datos?
Teora de la Serializabilidad
Tema 7. Control de la concurrencia
13
7.2 Serializabilidad
Planificacin de transacciones
Cada transaccin comprende una secuencia de
operaciones que incluyen acciones de lectura y
escritura en la BD, que finaliza con una confirmacin
(commit) o anulacin (rollback)
Una planificacin P de n transacciones
concurrentes T1, T2 ... Tn es una secuencia de las
operaciones realizadas por dichas transacciones,
sujeta a la restriccin de que
para cada transaccin Ti que participa en P,
sus operaciones aparecen en P
en el mismo orden en el que ocurren en Ti
Tema 7. Control de la concurrencia
14
7.2 Serializabilidad
Planificacin de transacciones
Para el control de la concurrencia (y recuperacin de
fallos) interesa prestar mayor atencin a estas
abreviatur
operaciones: operacin
a
leer_elemento
escribir_elemento
commit
rollback
15
7.2 Serializabilidad
Planificacin serie
Una planificacin serie P es aquella en la que las
operaciones de cada transaccin se ejecutan
consecutivamente sin que se intercalen
operaciones de otras transacciones
PA: l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ; l2(X) ; e2(X) ; c2 ;
PB: l2(X) ; e2(X) ; c2 ; l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ;
Toda planificacin serie es correcta BD
consistente
Pero no se garantiza que los resultados de todas las
ejecuciones en serie de las mismas transacciones
sean idnticos
Ejemplo: clculo del inters de una cuenta bancaria antes o despus de realizar
un ingreso considerable
16
7.2 Serializabilidad
Planificacin no serie
Una planificacin no serie P es aquella en la que
las operaciones de un conjunto de
transacciones concurrentes se ejecutan
intercaladas
KO
17
7.2 Serializabilidad
Planificacin serializable
Una planificacin P (no serie) es serializable si es
equivalente a alguna planificacin serie de las
mismas n transacciones
Una planificacin que no es equivalente a ninguna
ejecucin en serie, es una planificacin no serializable
18
7.2 Serializabilidad
Equivalencia por conflictos
Si dos transacciones nicamente leen un
determinado elemento de datos, no entran en
conflicto entre s y el orden de las operaciones no es
importante
Si hay dos transacciones que leen o escriben
elementos de datos independientes, no entran en
conflicto entre s y el orden de las operaciones no es
importante
Si una de las transacciones escribe un elemento de
datos y la otra lee o escribe el mismo elemento,
entran en conflicto y el orden de las operaciones
s es importante
Tema 7. Control de la concurrencia
19
7.2 Serializabilidad
Equivalencia por conflictos
En una planificacin, 2 operaciones estn en
conflicto si
pertenecen a diferentes transacciones,
tienen acceso al mismo elemento X,
y al menos una de ellas es escribir_elemento(X)
Operaciones en conflicto en las planificaciones PC y PD:
7.2 Serializabilidad
Planificacin serializable por conflictos
Una planificacin P es serializable por conflictos
si equivale por conflictos a alguna planificacin
serie S
Podremos intercambiar cada dos operaciones de P
consecutivas de transacciones distintas y sin conflicto, hasta
obtener la planificacin serie equivalente
PD : l1(X) ; e1(X) ; l2(X) ; e2(X) ; c2 ; l1(Y) ; e1(Y) ; c1 ;
PD1: l1(X) ; e1(X) ; l2(X) ; e2(X) ; l1(Y) ; c2 ; e1(Y) ; c1 ;
PD2: l1(X) ; e1(X) ; l2(X) ; e2(X) ; l1(Y) ; e1(Y) ; c2 ; c1 ;
PD3: l1(X) ; e1(X) ; l2(X) ; e2(X) ; l1(Y) ; e1(Y) ; c1 ; c2 ;
PD4: l1(X) ; e1(X) ; l2(X) ; l1(Y) ; e2(X) ; e1(Y) ; c1 ; c2 ;
PD5: l1(X) ; e1(X) ; l2(X) ; l1(Y) ; e1(Y) ; e2(X) ; c1 ; c2 ;
PD6: l1(X) ; e1(X) ; l2(X) ; l1(Y) ; e1(Y) ; c1 ; e2(X) ; c2 ;
PD7: l1(X) ; e1(X) ; l1(Y) ; l2(X) ; e1(Y) ; c1 ; e2(X) ; c2 ;
P : l (X) ; e (X) ; l (Y) ; e1(Y) ; l2(X) ; c1 ; e2(X) ; c2 ;
Tema 7. Control D8
de la
1 concurrencia
1
1
7.2 Serializabilidad
Deteccin de la serializabilidad por conflictos
Construccin del grafo de precedencia (o de
serializacin)
Es un grafo dirigido G = ( N, A )
N es un conjunto de nodos y A es un conjunto de aristas
Ti
dirigidas
Algoritmo:
Crear un nodo por cada transaccin Ti en P
Crear una arista Tj Tk si Tk lee el valor de un elemento
despus de que Tj lo haya escrito
Crear una arista Tj Tk si Tk escribe el valor de un
elemento despus de que Tj lo haya ledo
Tj de unTk
Crear una arista Tj Tk si Tk escribe el valor
elemento despus de que Tj lo haya escrito
Tema 7. Control de la concurrencia
22
7.2 Serializabilidad
Deteccin de la serializabilidad por conflictos (y 2)
Una arista Tj Tk indica que Tj debe aparecer antes
que Tk en una planificacin serie equivalente a P,
pues dos operaciones en conflicto aparecen en dicho
orden en P
Si el grafo contiene un ciclo, P no es serializable
por conflictos
Un ciclo es una secuencia de aristas C=((Tj Tk), (Tk Tp),... (Ti
Tj))
PC
23
7.2 Serializabilidad
Ejemplo de planificacin no serializable
Transaccin T1
leer_elemento(X);
escribir_elemento(X);
leer_elemento(Y);
escribir_elemento(Y);
Transaccin T2
leer_elemento(Z);
leer_elemento(Y);
escribir_elemento(Y);
leer_elemento(X);
escribir_elemento(X);
Transaccin T3
leer_elemento(Y);
leer_elemento(Z);
escribir_elemento(Y);
escribir_elemento(Z);
Y
T1
leer_elemento(X);
escribir_elemento(X
);
T2
T3
leer_elemento(Z);
leer_elemento(Y);
escribir_elemento(Y)
;
leer_elemento(Y);
leer_elemento(Z);
leer_elemento(X);
leer_elemento(Y);
escribir_elemento(Y
); 7. Control de la concurrencia
escribir_elemento(X)
Tema
escribir_elemento(Y
);
escribir_elemento(Z
);
Planificacin E
T1
T2
Y,Z
T3
Hay dos ciclos:
T1T2T1 y
T1T2T3T1
24
7.2 Serializabilidad
Ejemplo de planificacin serializable
Transaccin T1
leer_elemento(X);
escribir_elemento(X);
leer_elemento(Y);
escribir_elemento(Y);
T1
Transaccin T2
leer_elemento(Z);
leer_elemento(Y);
escribir_elemento(Y);
leer_elemento(X);
escribir_elemento(X);
T2
leer_elemento(X);
escribir_elemento(X
);
leer_elemento(Z);
leer_elemento(Y);
escribir_elemento(Y leer_elemento(Y);
);
escribir_elemento(Y)
;
leer_elemento(X);
escribir_elemento(X)
Tema 7. Control de la concurrencia
Transaccin T3
leer_elemento(Y);
leer_elemento(Z);
escribir_elemento(Y);
escribir_elemento(Z);
T3
leer_elemento(Y);
leer_elemento(Z);
escribir_elemento(Y
);
escribir_elemento(Z
);
Planificacin F
T1
X,Y
T2
Y,Z
T3
La planificacin
serie
equivalente es
T3 T1 T2
25
7.2 Serializabilidad
Aplicaciones de la serializabilidad
Planificador de
Tareas del SO
Planificacin P
(ordenamiento de
las operaciones)
P serializable?
SI
OK
reintentar
NO
Cancelar el
efecto de P
enfoque muy
poco prctico!!
26
Mtodos de bloqueo
Mtodos de marca de tiempo
Tcnicas de multiversin
Mtodos optimistas
27
28
29
31
T4
T5
bloquear_lectura(Y);
leer_elemento(Y);
desbloquear(Y);
bloquear_lectura(X);
leer_elemento(X);
desbloquear(X);
bloquear_escritura(Y
); leer_elemento(Y);
Y:=X+Y;
escribir_elemento(Y)
;
bloquear_escritura(X)
desbloquear(Y);
;
leer_elemento(X);
X:=X+Y;
Planificacin G
escribir_elemento(X);
desbloquear(X);
32
Fase de contraccin
T puede liberar bloqueos existentes
T no puede adquirir ningn bloqueo
Tema 7. Control de la concurrencia
33
bloquear_lectura(X);
leer_elemento(X);
bloquear_escritura(Y);
desbloquear(X);
leer_elemento(Y);
Y:=X+Y;
escribir_elemento(Y);
desbloquear(Y);
34
Inconvenientes
El B2F puede limitar el grado de concurrencia en un plan
Emplear bloqueos puede provocar problemas de ...
Interbloqueo (bloqueo mortal o abrazo mortal)
Bloqueo indefinido (o espera indefinida)
35
noutilizado
libera ningn
el Tms
(con COMMIT o ROLLBACK)
conservador)
Bloqueo
en dos fases riguroso
T no
libera
bloqueo compartido ni exclusivo hasta
ms
restrictivo
queningn
el B2F estricto
terminar (con COMMIT o ROLLBACK) planificacin estricta
Tema 7. Control de la concurrencia
36
T7
bloquear_escritura(Y)
;
leer_elemento(Y);
Y:=Y+100;
escribir_elemento(Y);
bloquear_escritura(Y)
;
El SGBD ha de reconocer un
[ en
espera ]
interbloqueo
y romperlo:
Abortar una o ms transacciones
Se deshacen sus escrituras y se liberan sus bloqueos
As, el resto de transacciones podr continuar su
ejecucin
37
39
40
Inconvenientes
Ambos algoritmos hacen que sean abortadas y reiniciadas
transacciones que podran provocar un bloqueo mortal,
aunque tal cosa nunca ocurriera!
En el algoritmo Esperar-Morir, una Tj podra abortar y
reiniciarse varias veces seguidas si Tk ms antigua sigue
bloqueando el X que Tj solicita
Tema 7. Control de la concurrencia
41
42
43
44
45
47
Y tambin...
nmero de elementos en la BD
carga de trabajo para la gestin de bloqueos, y
espacio ocupado por la informacin de bloqueo
48
Aclaracin ...
NIVEL DE ABSTRACCIN
LGICO O CONCEPTUAL:
Definicin del nivel de
aislamiento de cada
transaccin (por parte del
usuario o, por omisin, el
propio SGBD)
Control explcito de
bloqueos (operacin LOCK)
por parte del usuario, si se
permiten niveles de
aislamiento
inferiores
Estos
conceptos
se tratana en
SERIALIZABLE
el anexo
de este tema
NIVEL DE ABSTRACCIN
FSICO O INTERNO:
El SGBD implementa los
niveles de aislamiento
definidos por el usuario para
las transacciones siguiendo
una o varias tcnicas o
protocolos
Por ejemplo el SGBD Oracle
usa dos:
Bloqueos
Multiversin
Estos
conceptos se han
estudiado en la teora de
este tema
49
Aspectos de concurrencia en
SQL-92 y Oracle
SQL-92
Niveles de aislamiento de transaccin
Oracle
Niveles de aislamiento de transaccin
Tcnica multiversin
Bloqueos (candados)
50
SQL-92
Definicin de caractersticas de la transaccin que
se inicia
SET TRANSACTION modoacceso aislamiento
Modos de acceso
READ ONLY
Prohbe actualizaciones
READ WRITE (por defecto)
Nivel de aislamiento
51
SQL-92
Si alguna transaccin se ejecuta en algn nivel
menor al SERIALIZABLE, la seriabilidad puede ser
incumplida:
Nivel de aislamiento
Lectura
sucia
Lectura no
repetible
Lectura
fantasma
READ UNCOMMITED
READ COMMITED
No
REPEATABLE READ
No
No
SERIALIZABLE
No
No
No
52
Oracle
Caractersticas de la transaccin
SET TRANSACTION {READ ONLY | READ WRITE} aislamiento
53
Oracle
Consistencia de lectura
Garantiza que el conjunto de datos visto por una
sentencia es consistente con respecto del instante
en el que comenz, y que no cambia durante la
ejecucin de la sentencia
Asegura que los lectores no esperan a escritores ni
a otros lectores de los mismos datos
Asegura que los escritores no esperan a los lectores
de los mismos datos
Asegura que los escritores slo esperan a otros
escritores si intentan modificar las mismas filas en
transacciones concurrentes
54
Oracle
Implementacin de consistencia de lectura
Se asemeja a que cada usuario trabaja con una copia
privada de la BD (multiversin)
Cuando ocurre una actualizacin, los valores originales
de los datos afectados, se copian en otra zona del
disco (segmentos de rollback)
Mientras la transaccin T que actualiza no se confirma,
cualquier usuario que consulte los datos modificados
ve los valores originales
Los cambios hechos por T slo quedan permanentes
cuando T es confirmada
Las sentencias (de otras transacciones) que
comienzan despus de que T se confirme ya ven los
cambios hechos por T
Nunca ocurren lecturas sucias
55
Oracle
Bloqueos
Gestin Automtica de los bloqueos
Bloqueos exclusivos y compartidos
Permiten a otras transacciones leer los datos
bloqueados, pero no modificarlos
Gestin Manual
Se superpone al bloqueo automtico
Sentencia LOCK TABLE (no existe UNLOCK)
56