Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CAPÍTULO III
CONTROL DE LA CONCURRENCIA
1
08/10/2018
GENERALIDADES
• Multiprogramación:
• Procesamiento simultáneo
(paralelo) de transacciones
• Ejecución concurrente intercalada
GENERALIDADES
2
08/10/2018
GENERALIDADES
• Mecanismo de control.
• Permite controlar la interacción entre los usuarios.
• Garantizar que la ejecución concurrente de transacciones no
resulta en una perdida de consistencia de la base de datos.
• La concurrencia se da cuando dos transacciones están
interconectadas.
PLANIFICACIÓN
(PROBLEMAS DE LA CONCURRENCIA)
3
08/10/2018
LECTURA/ ESCRITURA
PROBLEMAS DE LA CONCURRENCIA
(La actualización perdida)
• LEER(X);
4
08/10/2018
PROBLEMAS DE LA CONCURRENCIA
(La actualización perdida) EJEMPLO
• LEER(X); • LEER(100);
• X = 100 • X:= X-N; • X:= 100-60;
• •
• Y= 80 •
LEER(X);
X:= X+M; •
LEER(100);
X:= 100+50;
• N = 60 • ESCRIBIR(X); • ESCRIBIR(40);
• LEER(Y); • LEER(80);
• M = 50 • ESCRIBIR(X); • ESCRIBIR(150);
• Y:=Y+N; • Y:=80+60;
• ESCRIBIR(Y); • ESCRIBIR(140); •
T1 y T2 que acceden a los mismos datos, tienen sus operaciones intercaladas de modo que
hacen incorrecto el valor de algún dato.
PROBLEMAS DE LA CONCURRENCIA
(La actualización perdida) EJEMPLO
• LEER(X); • LEER(100);
T1 y T2 que acceden a los mismos datos, tienen sus operaciones intercaladas de modo que hacen
incorrecto el valor de algún dato.
5
08/10/2018
PROBLEMAS DE LA CONCURRENCIA
(Intercalación de Operaciones)
Transacción T1 Transacción T2
• LEER(X); • LEER(X);
• X:= X-N; • X:= X+M;
resultado incorrecto, • ESCRIBIR(X); • ESCRIBIR(X);
PROBLEMAS DE LA CONCURRENCIA
(Intercalación de Operaciones) EJEMPLO
Transacción T1 Transacción T2
• • • •
• X = 100
LEER(X); LEER(100); LEER(X); LEER(100);
• X:= X+M; • X:= 100+50; • X:= X-N; • X:= 100-60;
• Y= 80 • ESCRIBIR(X); • ESCRIBIR(150); • ESCRIBIR(X); • ESCRIBIR(40);
• N = 60 • LEER(Y); • LEER(80);
• •
• M = 50 •
Y:=Y+N;
ESCRIBIR(Y); •
Y:=80+60;
ESCRIBIR(140);
6
08/10/2018
PROBLEMAS DE LA CONCURRENCIA
(Intercalación de Operaciones) EJEMPLO
• LEER(X); • LEER(100);
• X = 100 • X:= X-N; • X:= 100-60;
• •
• Y= 80 ESCRIBIR(X); ESCRIBIR(40);
• LEER(X); • LEER(40);
PROBLEMAS DE LA CONCURRENCIA
(actualización temporal o lectura sucia)
• LEER(X);
T1 actualiza un elemento X de • X:= X-N;
7
08/10/2018
PROBLEMAS DE LA CONCURRENCIA
(actualización temporal o lectura sucia) EJEMPLO
• LEER(X); • LEER(100);
• X = 100 • X:= X-N; • X:= 100-60;
• Y= 80 • ESCRIBIR(X); • ESCRIBIR(40);
• LEER(X); • LEER(40);
• N = 60 • X:= X+M; • X:= 40+50;
• M = 50 • LEER(Y); • LEER(80);
• ESCRIBIR(X); • ESCRIBIR(90);
• … • … • •
PROBLEMAS DE LA CONCURRENCIA
(El resumen incorrecto)
• suma:=0;
8
08/10/2018
PROBLEMAS DE LA CONCURRENCIA
(El resumen incorrecto) EJEMPLO
• suma:=0; • suma:=0;
• X = 100 • LEER(A); • LEER(120);
• suma:= suma+A; • suma:= suma+120;
• Y= 80 • LEER(X); • LEER(100);
• X:= X-N; • X:= 100-600;
• N = 60 • ESCRIBIR(X); • ESCRIBIR(40);
• •
• M = 50 •
LEER(X);
suma:= suma+X; •
LEER(40);
suma:= suma+40;
Otra transacción T2 calcula una función agregada de resumen sobre varios registros (suma las plazas
reservadas para todos los vuelos), mientras otras transacciones, como T1, actualizan dichos registros:
puede que T2 considere unos registros antes de ser actualizados y otros después
PROBLEMAS DE LA CONCURRENCIA
(El resumen incorrecto) EJEMPLO
• suma:=0; • suma:=0;
• X = 100 •
•
LEER(A);
suma:= suma+A;
•
•
LEER(120);
suma:= suma+120;
• •
• Y= 80 •
LEER(X);
X:= X-N; •
LEER(100);
X:= 100-600;
• •
•
ESCRIBIR(X); ESCRIBIR(40);
N = 60 • LEER(X); • LEER(40);
• suma:= suma+X; • suma:= suma+40;
• M = 50 • ESCRIBIR (X); • ESCRIBIR (40);
• LEER(Y); • LEER(80);
• A = 120 •
•
Y:= suma+Y;
ESCRIBIR (Y);
•
•
Y:= suma+80;
ESCRIBIR (240)
• LEER(Y); • LEER(240);
• Y:=Y+N; • Y:=240+60;
• ESCRIBIR(Y); • ESCRIBIR(300); • •
Otra transacción T2 calcula una función agregada de resumen sobre varios registros (suma las plazas reservadas para todos los vuelos),
mientras otras transacciones, como T1, actualizan dichos registros: puede que T2 considere unos registros antes de ser actualizados y otros
después
9
08/10/2018
PROBLEMAS DE LA CONCURRENCIA
(La lectura no repetible)
• LEER(X); •
T2 lee un elemento X dos veces y otra • X:= X-N; •
transacción, como T1, modifica dicho X • • LEER(X);
entre las dos lecturas: T2 recibe • ESCRIBIR(X); •
diferentes valores para el mismo • LEER(Y); •
elemento. • •
• • LEER(X);
• •
• Y:=Y+N; •
• ESCRIBIR(Y); •
Planificación de transacciones
10
08/10/2018
PLANIFICACIÓN / SERIABILIDAD
MOTIVACIÓN
• Objetivo de un protocolo de
• LEER(X); • LEER(X);
•
control de concurrencia:
Planificar las transacciones de
• X:= X-N; • X:= X+M;
forma que no ocurran
interferencias entre ellas, y así • ESCRIBIR(X); • ESCRIBIR(X);
evitar la aparición de los
problemas mencionados
• LEER(Y); • LEER(X);
• Solución obvia: no permitir
intercalación de
operaciones de varias
• Y:=Y+N; • X:= X-N;
transacciones
• ESCRIBIR(Y); • ESCRIBIR(X);
• LEER(X); • LEER(Y);
• X:= X+M; • Y:=Y+N;
• ESCRIBIR(X); • ESCRIBIR(Y);
B
PLANIFICACIÓN: A PLANIFICACIÓN:
SERIALIZABILIDAD
11
08/10/2018
SERIALIZABILIDAD
PLANIFICACIÓN DE TRANSACCIONES
operación abreviatura
LEER l
ESCRIBIR e
COMMIT c
ROLLBACK r
SERIALIZABILIDAD
PLANIFICACIÓN DE TRANSACCIONES (EJEMPLO)
T1 T2
• T1: LEER(X) •
• T1: LEER(X)
• T1: ESCRIBIR(X) •
• T1: ESCRIBIR(X)
• T1: LEER(Y) •
• T1: LEER(Y)
• T1: COMMIT •
• T1: COMMIT • • T2: LEER(X)
• T2: COMMIT
El subíndice de cada operación indica la transacción que la realiza PA: l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ; l2(X) ; e2(X) ; c2 ;
12
08/10/2018
• T1: LEER(X)
• T1: ESCRIBIR(X) •
• T1: LEER(Y) •
• T1: ESCRIBIR(Y) •
SERIALIZABILIDAD • T1: COMMIT •
•
• T2: LEER(X)
PLANIFICACIÓN SERIE • T2: ESCRIBIR(X) •
• T2: COMMIT •
• •
• • T2: LEER (X)
Una planificación serie P es aquella en la que las operaciones de
• • T2: ESCRIBIR (X)
cada transacción se ejecutan consecutivamente sin que se
intercalen operaciones de otras transacciones • • T2: COMMIT
• • T1: LEER (X)
PA: l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ; l2(X) ; e2(X) ; c2 ;
• • T1: ESCRIBIR (X)
• A PB: l2(X) ; e2(X) ; c2 ; l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ;
• • T1: LEER (Y)
• • T1: ESCRIBIR (Y)
• T1: COMMIT
SERIALIZABILIDAD
PLANIFICACIÓN NO SERIE
13
08/10/2018
SERIALIZABILIDAD
PLANIFICACIÓN SERIALIZABLE
SERIALIZABILIDAD
EQUIVALENCIA POR CONFLICTOS
14
08/10/2018
SERIALIZABILIDAD
EQUIVALENCIA POR CONFLICTOS
PC: l1(X) ; l2(X) ; e1(X) ; l1(Y) ; e2(X) ; c2 ; e1(Y) ; c1; PD: l1(X) ; e1(X) ; l2(X) ; e2(X) ; c2 ; l1(Y) ; e1(Y) ; c1;
SERIALIZABILIDAD
DETECCIÓN DE LA SERIALIZABILIDAD POR CONFLICTOS (GRAFOS)
N es un conjunto de nodos
grafo dirigido G = ( N, A ) A es un conjunto de aristas
dirigidas
• Algoritmo:
• Crear un nodo por cada transacción Ti en P
• Crear una arista Tj Tk si Tk lee el valor de un elemento después de que Tj lo
haya escrito
• Crear una arista Tj Tk si Tk escribe el valor de un elemento después de que Tj
lo haya leído
• Crear una arista Tj Tk si Tk escribe el valor de un elemento después de que Tj
lo haya escrito
15
08/10/2018
SERIALIZABILIDAD
DETECCIÓN DE LA SERIALIZABILIDAD POR CONFLICTOS (Y 2)
• Una arista Tj Tk indica que Tj debe aparecer antes que Tk en una planificación 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))
• Si no hay ciclos en el grafo, P es serializable
Es posible obtener una planificación serie S equivalente a P, mediante una
ordenación topológica de los nodos
SERIALIZABILIDAD
EJEMPLO DE PLANIFICACIÓN NO SERIALIZABLE
LEER(Z);
LEER(Y);
Hay dos ciclos:
ESCRIBIR(Y); T1→T2→T1 y T1→T2→T3→T1
LEER(Y);
LEER(Z); Y
LEER(X);
ESCRIBIR(X); T1 T2
ESCRIBIR(Y);
X
ESCRIBIR(Z);
LEER(X); Y Y,Z
LEER(Y);
ESCRIBIR(Y);
ESCRIBIR(X);
T3
PLANIFICACIÓN E
16
08/10/2018
SERIALIZABILIDAD
EJEMPLO DE PLANIFICACIÓN SERIALIZABLE
LEER(Y);
LEER(Z); La planificación serie equivalente es T3 → T1 →
LEER(X); T2
ESCRIBIR(X);
ESCRIBIR(Y);
LEER(Z);
ESCRIBIR(Z);
T1 T2
LEER(Y); X,Y
ESCRIBIR(Y);
LEER(Y); Y Y,Z
ESCRIBIR(Y);
LEER(X);
ESCRIBIR(X);
T3
Planificación F
PROTOCOLOS DE BLOQUEO
DEFINICIONES
• PROTOCOLO
• Conjunto de reglas que garantizan la serialización.
• BLOQUEO
• Conjunto de herramientas que impiden acceso concurrente a los datos.
• MARCAS TEMPORALES
• Una marca de tiempo es un identificador único generado por el sistema para cada transacción.
• MULTIVERSIÓN
• Utilizan varias versiones de un elemento de datos.
• GRANULARIDAD
• Porción de la base de datos es representada por un elemento de datos
17
08/10/2018
PROTOCOLOS DE BLOQUEO
escribir.
2. Exclusivo. Si una transacción T obtiene un bloqueo en modo exclusivo (denotado
i
• Clasificación
• Métodos de bloqueo
• Métodos de marca de tiempo
• Técnicas de multiversión
• Métodos optimistas
18
08/10/2018
PROTOCOLOS DE BLOQUEO
REALIZA OTORGA
TRANSACCIÓN BLOQUEO
PROTOCOLOS DE BLOQUEO
FUNCIÓN DE COMPATIBILIDAD
A Ti
A
B Tj
Ti
GESTOR DE
Ti ≠ Tj CONTROL DE
CONCURRENCIA
Tj
A Ti
B
B Tj
19
08/10/2018
PROTOCOLOS DE BLOQUEO
FUNCIÓN DE COMPATIBILIDAD
• BLOQUEOS BINARIOS
• BLOQUEOS COMPARTIDOS/EXCLUSIVOS
20
08/10/2018
PROTOCOLOS BASADOS EN
BLOQUEO (BINARIOS)
PROTOCOLOS BASADOS EN
BLOQUEO (BINARIOS)
21
08/10/2018
PROTOCOLOS BASADOS EN
BLOQUEO (BINARIOS)
• BLOQUEAR(X)
Una transacción T debe emitir la
• Leer (X)
operación bloquear(X) antes de que se • X:= X + 50
ejecute cualquier operación leer (X) o
escribir(X) en T.
• Escribir (X)
• DESBLOQUEAR(X)
• BLOQUEAR (X)
• …..
PROTOCOLOS BASADOS EN
BLOQUEO (BINARIOS)
22
08/10/2018
PROTOCOLOS BASADOS EN
BLOQUEO (COMPARTIDOS/EXCLUSIVOS)
PROTOCOLOS BASADOS EN
BLOQUEO (COMPARTIDOS/EXCLUSIVOS)
REGLAS
1. Una transacción T debe emitir la operación bloquea_Lectura(X) o bloquear_escritura(X) antes de
que se ejecute cualquier operación LEER(X) de T
2. Una transacción T debe emitir la operación bloquear_escritura(X) antes de que se ejecute cualquier
operación ESCRIBIR(X) de T
3. Una transacción T debe emitir la operación desbloquear(X) una vez que se hayan completado todas
las operaciones LEER(X) y ESCRIBIR(X) de T3
4. Una transacción T no emitirá una operación Bloquea_Lectura(X) si ya posee un bloqueo de lectura
(compartido) o de escritura (exclusivo) para el elemento X Esta regla se puede hacer menos estricta,
como veremos en breve.
5. Una transacción T no emitirá una operación bloquear_escritura(X) si ya posee un bloqueo de lectura
(compartido) o de escritura (exclusivo) para el elemento X Esta regla se puede hacer menos estricta.
6. Una transacción T no emitirá una operación desbloquear(X) a menos que ya posea un bloqueo de
lectura (compartido) o de escritura (exclusivo) sobre el elemento X
23
08/10/2018
Y:=X+Y; X:=X+Y;
Escribir (Y); Escribir (X);
Desbloquear (Y); Desbloquear (X);
• A • B
PROTOCOLOS BASADOS EN
BLOQUEO (BLOQUEO DE DOS FASES)
REGLAS
1. Una transacción T debe emitir la operación Bloquea_Lectura(X) o
bloquear_escritura(X) antes de que se ejecute cualquier operación
LEER(X) de T
2. Una transacción T debe emitir la operación bloquear_escritura(X) antes
de que se ejecute cualquier operación ESCRIBIR(X) de T
3. Una transacción T debe emitir la operación desbloquear(X) una vez que
se hayan completado todas las operaciones LEER(X) y ESCRIBIR(X) de
T3.
24
08/10/2018
PROTOCOLOS BASADOS EN
BLOQUEO (BLOQUEO DE DOS FASES)
25