36
PLANTEL CONALEP DR GUILLERMO FIGUEROA CARDENAS PLANTEL CONALEP DR GUILLERMO FIGUEROA CARDENAS CONSTRUCCION DE BASE DE DATOS CONSTRUCCION DE BASE DE DATOS Alumna: D.I.S.G Alumna: D.I.S.G

B. manejo de concurrencia

Embed Size (px)

Citation preview

Page 1: B.  manejo de concurrencia

PLANTEL CONALEP DR GUILLERMO FIGUEROA CARDENASPLANTEL CONALEP DR GUILLERMO FIGUEROA CARDENAS

CONSTRUCCION DE BASE DE DATOSCONSTRUCCION DE BASE DE DATOS

Alumna: D.I.S.GAlumna: D.I.S.G

Page 2: B.  manejo de concurrencia

3.1 3.1 Programa las transacciones en las bases de

datos, para mantener la integridad de la información.

3.1.1 3.1.1 Programa y ejecuta transacciones en la base de

datos utilizando el protocolo de bloqueo de dos

fases y control de concurrencia.

Page 3: B.  manejo de concurrencia

B.- Manejo de Concurrencia

Definición de concurrencia

Técnicas de bloqueo

Seriabilidad con el bloqueo en dos fases.

Page 4: B.  manejo de concurrencia

Conocer la problemática asociada a la concurrencia de transacciones en los sistemas de bases de datosEntender el significado de la seriabilidad y su aplicación al control de la concurrenciaComprender algunas técnicas para el control de la concurrencia empleadas por los sistemas gestores de bases de datos

Objetivo de la sesión

Page 5: B.  manejo de concurrencia

Los sistemas de bases de datos, según el número 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 multiprogramación: la computadora puede procesar al mismo tiempo varias transaccionesSi el equipo tiene varias CPU, es posible el

procesamiento simultáneo (paralelo) de transaccionesSi sólo hay una CPU, el SO de multiprogramación

reparte el tiempo de CPU entre las transacciones: ejecución concurrente intercalada

Introducción

Page 6: B.  manejo de concurrencia

Aumentar la productividad: número de transacciones ejecutadas por minuto.

Aumentar la utilización de la CPU (menos tiempo ociosa) y Control del disco.

Reducir el tiempo medio de respuesta de transacciones (las ‘pequeñas’ no esperan a las ‘grandes’).

Razones para permitir concurrencia

Page 7: B.  manejo de concurrencia

porque pueden surgir problemas si las transacciones concurrentes se ejecutan de manera no controlada

problemas de la concurrencia

¿Por qué es necesario el control de la concurrencia?

Page 8: B.  manejo de concurrencia

Ejemplo sencillo:sistema de bases de datos que permite hacer y anular reservas de plazas en vuelos de diferentes compañías aéreas.Se almacena un registro por cada vuelo, que incluye,

entre otras cosas, el número de asientos reservados en el vuelo

Sean dos transacciones T1 y T2 concurrentes:T1 transfiere N reservas realizadas en un vuelo X a otro

vuelo YT2 reserva M plazas en el vuelo X

problemas de la concurrencia

¿Por qué es necesario el control de la concurrencia?

Page 9: B.  manejo de concurrencia

Cada transacción comprende una secuencia de operaciones que incluyen acciones de lectura y escritura en la BD, que finaliza con una confirmación (commit) o anulación (rollback)

Una planificación P de n transacciones concurrentes T1, T2 ... Tn es una secuencia de las operaciones realizadas por dichas transacciones, sujeta a la restricción de que

para cada transacción Ti que participa en P, sus operaciones aparecen en P en el mismo orden en el que ocurren en Ti

Serializabilidad

Planificación de transacciones

Page 10: B.  manejo de concurrencia

Para el control de la concurrencia (y recuperación de fallos) interesa prestar mayor atención a estas operaciones:

Ejemplos de planificaciones de transacciones 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 ; PB: l2(X) ; e2(X) ; c2 ; l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ;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 ;PE: l1(X) ; e1(X) ; l2(X) ; e2(X) ; c2 ; l1(Y) ; r1 ;

Serializabilidad

Planificación de transacciones

operación abreviatura

leer_elemento l

escribir_elemento e

commit c

rollback r

Page 11: B.  manejo de concurrencia

Una planificación no serie P es aquella en la que las operaciones de un conjunto de transacciones concurrentes se ejecutan intercaladas

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 ;

Hemos de determinar qué planificaciones no serie permiten llevar la BD a un estado al que pueda llegarse mediante una ejecución en serie

Serializabilidad

Planificación no serie

Este es el objetivo de la Serializabilidad

KO

Page 12: B.  manejo de concurrencia

Una planificación P (no serie) es serializable si es equivalente a alguna planificación serie de las mismas n transacciones Una planificación que no es equivalente a ninguna ejecución en serie, es una planificación no serializable

Toda planificación serializable es correcta Produce los mismos resultados que alguna ejecución en serie

Dos maneras de definir la equivalencia entre planificaciones:

Equivalencia por conflictosEquivalencia de vistas

Serializabilidad

Planificación serializable

Page 13: B.  manejo de concurrencia

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

Serializabilidad

Equivalencia por conflictos

Page 14: B.  manejo de concurrencia

En una planificación, 2 operaciones están 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:

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 ;

Dos planes son equivalentes por conflictos si el orden de cualesquiera dos operaciones en conflicto es el mismo en ambos planes

Serializabilidad

Equivalencia por conflictos

Page 15: B.  manejo de concurrencia

Una planificación P es serializable por conflictos si equivale por conflictos a alguna planificación serie S Podremos intercambiar cada dos operaciones de P consecutivas de transacciones distintas y sin conflicto, hasta

obtener la planificación 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 ;

PD8: l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; l2(X) ; c1 ; e2(X) ; c2 ;

PD9: l1(X) ; e1(X) ; l1(Y) ; e1(Y) ; c1 ; l2(X) ; e2(X) ; c2 ;

Serializabilidad

Planificación serializable por conflictos

¡Es una planificación serie! PD es serializable

Page 16: B.  manejo de concurrencia

Planificación E

Serializabilidad

Ejemplo de planificación no serializableTransacción T1leer_elemento(X);escribir_elemento(X);leer_elemento(Y);escribir_elemento(Y);

Transacción T2leer_elemento(Z);leer_elemento(Y); escribir_elemento(Y);leer_elemento(X);escribir_elemento(X);

Transacción T3leer_elemento(Y);leer_elemento(Z);escribir_elemento(Y);escribir_elemento(Z);

T1

leer_elemento(X);escribir_elemento(X);

leer_elemento(Y);escribir_elemento(Y);

T2leer_elemento(Z);leer_elemento(Y); escribir_elemento(Y);

leer_elemento(X);

escribir_elemento(X);

T3

leer_elemento(Y);leer_elemento(Z);

escribir_elemento(Y);escribir_elemento(Z);

T1 T2

Y

X

T3

Y,ZY

Hay dos ciclos:T1→T2→T1 y

T1→T2→T3→T1

Page 17: B.  manejo de concurrencia

Planificación F

Serializabilidad

Ejemplo de planificación serializableTransacción T1leer_elemento(X);escribir_elemento(X);leer_elemento(Y);escribir_elemento(Y);

Transacción T2leer_elemento(Z);leer_elemento(Y); escribir_elemento(Y);leer_elemento(X);escribir_elemento(X);

Transacción T3leer_elemento(Y);leer_elemento(Z);escribir_elemento(Y);escribir_elemento(Z);

T1

leer_elemento(X);escribir_elemento(X);

leer_elemento(Y);escribir_elemento(Y);

T2

leer_elemento(Z);

leer_elemento(Y); escribir_elemento(Y);leer_elemento(X);escribir_elemento(X);

T3leer_elemento(Y);leer_elemento(Z);

escribir_elemento(Y);escribir_elemento(Z);

T1 T2X,Y

T3

Y,ZY

La planificación serie

equivalente es T3 → T1 → T2

Page 18: B.  manejo de concurrencia

• Métodos basados en la teoría de la serializabilidad, que definen un conjunto de reglas (o protocolo) tal que...– si todas las transacciones las cumplen, o– el subsistema de control de concurrencia del

SGBD las impone (automáticamente)

... se asegura la serializabilidad de toda planificación de transacciones

• Clasificación– Métodos de bloqueo– Métodos de marca de tiempo– Técnicas de multiversión– Métodos optimistas

Técnicas de control de concurrencia

Page 19: B.  manejo de concurrencia

• Uso de bloqueos para controlar el acceso concurrente a los elementos de datos almacenados en la base de datos

• Reglas básicas del bloqueo:– Bloqueo compartido: si una transacción tiene un bloqueo

compartido sobre un elemento de datos, puede leer el elemento, pero no actualizarlo (escribir)

Varias transacciones pueden mantener a la vez bloqueos compartidos sobre el mismo elemento

– Bloqueo exclusivo: si una transacción tiene un bloqueo exclusivo sobre un elemento de datos, puede leer y actualizar (escribir) el elemento

Un bloqueo exclusivo proporciona acceso exclusivo al elemento

Técnicas de control de concurrencia

Métodos de bloqueo

Page 20: B.  manejo de concurrencia

Reglas de uso de los bloqueos1. T debe emitir bloquear_lectura(X) o bloquear_escritura(X) antes

de ejecutar una operación leer_elemento(X)2. T debe emitir bloquear_escritura(X) antes de realizar una

operación escribir_elemento(X) en T3. T debe emitir desbloquear(X) una vez completadas todas

las operaciones leer_elemento(X) y escribir_elemento(X)4. Si T ya posee un bloqueo, compartido o exclusivo,

sobre X no emitirá bloquear_lectura(X) ni bloquear_escritura(X)*esta regla puede permitir excepciones: mejora y reducción de bloqueos*

5. T no emitirá desbloquear(X) salvo si posee un bloqueo, compartido o exclusivo, sobre X

Técnicas de control de concurrencia

Métodos de bloqueo

Page 21: B.  manejo de concurrencia

• Cuando una transacción T solicita un bloqueo…– Si el elemento no ha sido ya bloqueado por otra

transacción, se le concede el bloqueo

– Si el elemento sí está bloqueado, el SGBD determina si la solicitud es compatible con el bloqueo existente:

Si se pide un bloqueo compartido sobre un elemento que ya tiene un bloqueo compartido, el bloqueo será concedido a T

En otro caso, T debe esperar hasta que se libere el bloqueo existente

• Una transacción que obtiene un bloqueo lo mantiene hasta que lo libera explícitamente o termina (commit o rollback)– Sólo cuando se libera un bloqueo exclusivo los efectos de la

escritura serán visibles para las demás transacciones

Técnicas de control de concurrencia

Métodos de bloqueo

Page 22: B.  manejo de concurrencia

• Algunos sistemas permiten la mejora (o promoción) y la reducción (o degradación) de bloqueos– Aumenta el nivel de concurrencia del sistema

• Si T emitió bloquear_lectura(X), más tarde puede mejorarlo a bloqueo exclusivo emitiendo bloquear_escritura(X)– Si T es la única que tiene un bloqueo compartido sobre X, se

le concede la solicitud– En otro caso, T debe esperar

• Si T emitió bloquear_escritura(X), más tarde puede reducirlo a un bloqueo compartido emitiendo bloquear_lectura(X)– Así permite que otras transacciones lean X

Técnicas de control de concurrencia

Métodos de bloqueo

Page 23: B.  manejo de concurrencia

• El uso de bloqueos para la programación de transacciones no garantiza la serializabilidad de las planificaciones

Técnicas de control de concurrencia

Métodos de bloqueo

T4bloquear_lectura(Y);leer_elemento(Y);desbloquear(Y);

bloquear_escritura(X);leer_elemento(X);X:=X+Y;escribir_elemento(X);desbloquear(X);

T5

bloquear_lectura(X);leer_elemento(X);desbloquear(X);bloquear_escritura(Y); leer_elemento(Y);Y:=X+Y;escribir_elemento(Y);desbloquear(Y);

Transacción T4bloquear_lectura(Y);leer_elemento(Y);desbloquear(Y);bloquear_escritura(X);leer_elemento(X);X:=X+Y;escribir_elemento(X);desbloquear(X);

Transacción T5bloquear_lectura(X);leer_elemento(X);desbloquear(X);bloquear_escritura(Y); leer_elemento(Y);Y:=X+Y;escribir_elemento(Y);desbloquear(Y);

Valores iniciales: X=20, Y=30Resultados de las planificaciones serie:T4→T5: X=50, Y=80T5→T4: X=70, Y=50

Resultado de la planificación G:X=50, Y=50 (No serializable!)

Planificación G

Page 24: B.  manejo de concurrencia

Es necesario seguir un protocolo adicional que indique dónde colocar las operaciones de bloqueo y desbloqueo dentro de las transacciones

• El más conocido es el Bloqueo en Dos Fases (B2F)• Una transacción T sigue el protocolo de bloqueo en

dos fases si todas las operaciones de bloqueo preceden a la primera operación de desbloqueo

De este modo, podemos ver T dividida en dos fases:– Fase de expansión (o crecimiento)

T puede adquirir bloqueos T no puede liberar ningún bloqueo

– Fase de contracción T puede liberar bloqueos existentes T no puede adquirir ningún bloqueo

Técnicas de control de concurrencia

Métodos de bloqueo: Bloqueo en dos fases

Page 25: B.  manejo de concurrencia

• Si el sistema permite mejorar y reducir bloqueos…– La mejora sólo puede tener lugar en la fase de expansión– La reducción sólo puede realizarse en la fase de

contracción En el código de T, un bloquear_lectura(X) puede aparecer en la

fase de contracción de T sólo si reduce un bloqueo exclusivo a uno compartido

Técnicas de control de concurrencia

Bloqueo en dos fases

Transacción T4’bloquear_lectura(Y);leer_elemento(Y);bloquear_escritura(X);desbloquear(Y);leer_elemento(X);X:=X+Y;escribir_elemento(X);desbloquear(X);

Transacción T5’bloquear_lectura(X);leer_elemento(X);bloquear_escritura(Y); desbloquear(X); leer_elemento(Y);Y:=X+Y;escribir_elemento(Y);desbloquear(Y);

Page 26: B.  manejo de concurrencia

• Si toda transacción de una planificación sigue el protocolo de bloqueo en dos fases, entonces la planificación es serializable

• Ventaja– Ya no es necesario comprobar la serializabilidad de las

planificaciones

• 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)

Técnicas de control de concurrencia

Bloqueo en dos fases

Page 27: B.  manejo de concurrencia

• T debe bloquear todos los elementos a los que tendrá acceso (lectura o escritura) antes de comenzar a ejecutarse

– Si no es posible bloquear algún elemento, T no bloqueará ninguno y esperará para reintentarlo más tarde

– Protocolo libre de interbloqueo

Técnicas de control de concurrencia

Bloqueo en dos fases conservador o estático

Bloqueo en dos fases estricto

el más utilizado• T no libera ningún bloqueo exclusivo hasta terminar

(con COMMIT o ROLLBACK)– Ninguna transacción lee o escribe un elemento

modificado por T, salvo si T se ha completadoplanificación estricta

– Puede sufrir interbloqueo (salvo si se combina con B2F conservador)Bloqueo en dos fases riguroso

más restrictivo que el B2F estricto• T no libera ningún bloqueo compartido ni exclusivo hasta terminar (con COMMIT o ROLLBACK) planificación estricta

Page 28: B.  manejo de concurrencia

• Situación en la que cada una de dos (o más) transacciones está esperando a que se libere un bloqueo establecido por la otra transacción

Técnicas de control de concurrencia

El problema del interbloqueo

T6bloquear_escritura(X);leer_elemento(X);X:=X-10;escribir_elemento(X);bloquear_escritura(Y);

[… en espera …]

T7

bloquear_escritura(Y);leer_elemento(Y);Y:=Y+100;escribir_elemento(Y); bloquear_escritura(Y);

[… en espera …]• El SGBD ha de reconocer un interbloqueo y romperlo:– Abortar una o más transacciones

Se deshacen sus escrituras y se liberan sus bloqueosAsí, el resto de transacciones podrá continuar su

ejecución

– Reiniciar automáticamente las transacciones abortadas

Page 29: B.  manejo de concurrencia

• Hay 3 técnicas generales para gestionar los interbloqueos– Temporizaciones de bloqueos– Prevención de interbloqueos– Detección de interbloqueos

• Conviene detectar interbloqueos cuando se sabe que hay poca interferencia entre transacciones, es decir si...– Las transacciones son cortas y bloquean pocos

elementos, o– La carga de transacciones es pequeña

• En otro caso, conviene usar temporizaciones o técnicas de prevención

Es más difícil prevenir que utilizar temporizaciones o que detectarlos y romperlos, por lo que en la práctica los sistemas no suelen emplear las técnicas de prevención

Técnicas de control de concurrencia

El problema del interbloqueo

Page 30: B.  manejo de concurrencia

• Una transacción que solicita un bloqueo sólo esperará durante un período de tiempo predefinido por el sistema

• Si no se concede el bloqueo durante ese tiempo, se producirá un ‘fin de temporización’: el SGBD asumirá que la transacción está interbloqueada (aunque puede que no), la abortará y la reiniciará automáticamente

Es una solución muy sencilla y prácticaPero puede hacer que sean abortadas y reiniciadas

transacciones que en realidad no están en un interbloqueo

Técnicas de control de concurrencia

Temporizaciones de bloqueos

Page 31: B.  manejo de concurrencia

Técnicas de control de concurrencia

Prevención de interbloqueos

• Ordenar las transacciones usando marcas temporales de transacción MT(T):

Identificador único para T Las MT se ordenan según se inician las transacciones La T más antigua tiene la MT(T) menor

Sea Tj que intenta bloquear el elemento de datos X , pero X ya está bloqueado por Tk con un candado en conflicto

• Algoritmo Esperar - Morirsi MT(Tj) < MT(Tk) entonces Tj puede esperarsi no, se aborta Tj (Tj muere) y

se reinicia después con la misma marca de tiempo

Una Tj más antigua espera a que termine otra Tk más reciente Una Tj más reciente que solicita un elemento bloqueado por una Tk

más antigua, es abortada (muere) y reiniciada

Page 32: B.  manejo de concurrencia

Técnicas de control de concurrencia

Detección de interbloqueos

• Si el sistema está en un estado de interbloqueo, el SGBD necesita abortar algunas transacciones...

• ¿Cuáles? Selección de víctimas– Es mejor abortar transacciones que lleven poco tiempo en

ejecución

– Es mejor abortar una transacción que haya hecho pocos cambios en la base de datos

– Es mejor abortar una transacción que todavía debe hacer muchos cambios en la base de datos

Puede que el SGBD no conozca esta información

Se trata de abortar las transacciones que supongan el mínimo coste

• Es necesario evitar la inanición

Page 33: B.  manejo de concurrencia

• Una transacción sufre inanición cuando es seleccionada para ser abortada (víctima) sucesivamente: nunca termina su ejecución– Es similar al bloqueo indefinido

• La solución es asignar prioridades más altas a las transacciones abortadas varias veces, para no ser siempre las víctimas

Técnicas de control de concurrencia

Detección de interbloqueos: el problema de la inanición

Page 34: B.  manejo de concurrencia

Técnicas de control de concurrencia

El problema del bloqueo indefinido

• El protocolo de control de concurrencia nunca selecciona a una transacción que está esperando para establecer un bloqueo, mientras otras transacciones continúan ejecutándose con normalidad– Ocurre si el esquema de espera da más prioridad a unas

transacciones que a otras esquema de espera injusto

• Dos algoritmos de prevención de bloqueo indefinido– Consiguen un esquema de espera justo El primero que llega, es el primero en ser

atendido• Las transacciones puede bloquear el elemento X en el

orden en que solicitaron su bloqueo Aumento de prioridad en la espera

• Cuanto más espera T, mayor es su prioridad• Cuando T tiene la prioridad más alta de todas, obtiene el

bloqueo y continúa su ejecución

Page 35: B.  manejo de concurrencia

• Toda técnica de control de concurrencia supone que la base de datos está constituida por un conjunto de elementos de datos con nombre

• Normalmente, un elemento de datos será uno de estos:– un valor de campo de un registro de la BD– un registro de la BD– una página (uno o varios bloques de disco)– un fichero– la BD completa

• Granularidad = tamaño del elemento de información– Granularidad fina elementos de tamaño pequeño– Granularidad gruesa elementos grandes

Granularidad de datos

Elementos de bases de datos y granularidad

Page 36: B.  manejo de concurrencia

• En el contexto de los métodos de bloqueo, el tamaño del elemento de datos afecta al grado de concurrencia: tamaño(elemento) Grado de concurrencia

Y también... número de elementos en la BD carga de trabajo para la gestión de

bloqueos, y espacio ocupado por la información de

bloqueo

• Pero... ¿Cuál es el tamaño adecuado para los elementos?Pues depende de la naturaleza de las transacciones:– Si una T representativa accede a pocos registros

elegir granularidad de registro– Si T accede a muchos registros de un mismo fichero

elegir granularidad de página o de fichero

Granularidad de datos

Elección del tamaño adecuado del elemento de datos