Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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. Introduccin y problemas de la concurrencia
2. Serializabilidad
3. Tcnicas de control de la concurrencia
4. Granularidad de datos
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. Addison-Wesley. (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
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).
leer_elemento(X);
X:= X-N;
escribir_elemento(X);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y);
Transaccin T2
leer_elemento(X);
X:= X+M;
escribir_elemento(X);
leer_elemento(X);
X:= X-N;
escribir_elemento(X);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y);
T2
leer_elemento(X);
X:= X+M;
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);
leer_elemento(Y);
T2
leer_elemento(X);
X:= X+M;
escribir_elemento(X);
leer_elemento(X);
X:= X-N;
escribir_elemento(X);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y);
Tema 7. Control de la concurrencia
T3
suma:=0;
leer_elemento(A);
suma:= suma+A;
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
leer_elemento(X);
X:= X-N;
escribir_elemento(X);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y);
Tema 7. Control de la concurrencia
T4
leer_elemento(X);
T4 lee X antes de
restar N
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
T2
T1
leer_elemento(X);
X:= X+M;
escribir_elemento(X);
leer_elemento(X);
X:= X-N;
escribir_elemento(X);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y);
Planificacin A
Tema 7. Control de la concurrencia
T2
leer_elemento(X);
X:= X+M;
escribir_elemento(X);
Planificacin B
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 transacciones
T1
leer_elemento(X);
X:= X-N;
T2
escribir_elemento(X);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y);
leer_elemento(X);
X:= X+M;
escribir_elemento(X);
T1
leer_elemento(X);
X:= X-N;
escribir_elemento(X);
leer_elemento(Y);
Y:=Y+N;
escribir_elemento(Y);
T2
leer_elemento(X);
X:= X+M;
escribir_elemento(X);
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
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
14
7.2 Serializabilidad
Planificacin de transacciones
Para el control de la concurrencia (y recuperacin de fallos)
interesa prestar mayor atencin a estas operaciones:
operacin
abreviatura
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
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:
20
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 ;
Es una planificacin serie!
PD8: l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; l2(X) ; c1 ; e2(X) ; c2 ;
PD es serializable
PD9: l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ; l2(X) ; e2(X) ; c2 ;
Tema 7. Control de la concurrencia
21
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 dirigidas
Algoritmo:
Ti
Tj
Tk
22
7.2 Serializabilidad
Deteccin de la serializabilidad por conflictos
(y 2)
T1
PA
T2
T1
PB
T2
T1
T2
PC
T1
PD
T2
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
T2
leer_elemento(Z);
leer_elemento(Y);
escribir_elemento(Y);
leer_elemento(X);
escribir_elemento(X);
leer_elemento(Y);
escribir_elemento(Y);
Tema 7. Control de la concurrencia
leer_elemento(X);
escribir_elemento(X);
T3
leer_elemento(Y);
leer_elemento(Z);
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(Y);
escribir_elemento(Y);
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);
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
30
31
T4
bloquear_lectura(Y);
leer_elemento(Y);
desbloquear(Y);
T5
bloquear_lectura(X);
leer_elemento(X);
desbloquear(X);
bloquear_escritura(Y);
leer_elemento(Y);
Y:=X+Y;
escribir_elemento(Y);
desbloquear(Y);
bloquear_escritura(X);
leer_elemento(X);
X:=X+Y;
escribir_elemento(X);
Planificacin G
desbloquear(X);
32
Fase de contraccin
T puede liberar bloqueos existentes
T no puede adquirir ningn bloqueo
Tema 7. Control de la concurrencia
33
Transaccin T5
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 ...
35
el ms utilizado
36
T7
bloquear_escritura(Y);
leer_elemento(Y);
Y:=Y+100;
escribir_elemento(Y);
bloquear_escritura(Y);
[ en espera ]
37
38
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
46
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 a
SERIALIZABLE
Estos conceptos se tratan en
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
49
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
READ UNCOMMITED
READ COMMITED
REPEATABLE READ
SERIALIZABLE
Lectura
sucia
S
No
No
No
Lectura no
repetible
S
S
No
No
Lectura
fantasma
S
S
S
No
Si
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