Abd clase 9 y 10

74
CLASE 9 y 10 ADMINISTRACIÓN DE BASE DE DATOS CONTROL DE CONCURRENCIA AUTORES: Prof. Roxydel Dulcey Prof. Josué Ramírez Marzo, 2011

Transcript of Abd clase 9 y 10

Page 1: Abd clase 9 y 10

CLASE 9 y 10

ADMINISTRACIÓN DE BASE DE DATOS

CONTROL DE CONCURRENCIA

AUTORES:

Prof. Roxydel Dulcey

Prof. Josué Ramírez

Marzo, 2011

Page 2: Abd clase 9 y 10

Control de Concurrencia

• Cuando se ejecutan varias transacciones concurrentemente en la base de datos, puede que deje de conservarse la propiedad de aislamiento.

• Es necesario que el sistema controle la interacción entre las transacciones concurrentes.

Page 3: Abd clase 9 y 10

Control de Concurrencia

• Este control se lleva a cabo a través de uno de los muchos mecanismos existentes llamado esquemas de control de concurrencia.

Page 4: Abd clase 9 y 10

Control de Concurrencia

• Los esquemas de control de concurrencia que veremos a continuación se basan en la propiedad de secuencialidad.

• Es decir, aseguran que las planificaciones sean secuenciables.

Page 5: Abd clase 9 y 10

Control de Concurrencia

• Una forma de asegurar la secuencialidades exigir que el acceso a los elementos de datos se haga en exclusión mutua; es decir, mientras una transacción accede a un elemento de datos, ninguna otra transacción puede modificar dicho elemento.

Page 6: Abd clase 9 y 10

Control de Concurrencia

• El método más habitual que se usa para implementar este requisito es permitir que una transacción acceda a un elemento de datos sólo si posee actualmente un bloqueo sobre dicho elemento.

Page 7: Abd clase 9 y 10

Tipos de Bloqueo

• Bloqueo Compartido.

• Bloqueo Exclusivo.

Page 8: Abd clase 9 y 10

Bloqueos

• Bloqueo Compartido:

Si una transacción Ti obtiene un bloqueo en modo compartido (denotado por C) sobre el elemento Q, entonces Ti puede leer Q pero no lo puede escribir.

Page 9: Abd clase 9 y 10

Bloqueos

• Bloqueo Exclusivo:

Si una transacción Ti obtiene un bloqueo en modo exclusivo (denotado por X) sobre el elemento Q, entonces Ti puede tanto leer como escribir Q.

Page 10: Abd clase 9 y 10

Bloqueos

• Es necesario que toda transacción solicite un bloqueo del modo apropiado sobre el elemento de datos Q dependiendo de los tipos de operaciones que se vayan a realizar sobre Q.

Page 11: Abd clase 9 y 10

Bloqueos

• La petición se hace al gestor de control de concurrencia.

• La transacción puede realizar la operación sólo después de que el gestor de control de concurrencia conceda el bloqueo a la transacción.

Page 12: Abd clase 9 y 10

Matriz de Compatibilidad de bloqueos

• Nótese que el modo compartido es compatible con otro modo compartido, pero no con el modo exclusivo.

Page 13: Abd clase 9 y 10

Compatibilidad de bloqueos

• En todo momento se pueden tener varios bloqueos en modo compartido (por varias transacciones) sobre un elemento de datos en concreto.

• Una petición posterior de bloqueo en modo exclusivo debe esperar hasta que se liberen los bloqueos en modo compartido que estén en ese momento.

Page 14: Abd clase 9 y 10

Bloqueos

Instrucciones de bloqueo:

• Bloquear-C(Q): solicita un bloqueo compartido sobre el elemento de datos Q.

• Bloquear-X(Q): solicita un bloqueo exclusivo sobre el elemento de datos Q.

Page 15: Abd clase 9 y 10

Bloqueos

• Desbloquear(Q): desbloquea un elemento de datos Q.

Page 16: Abd clase 9 y 10

Bloqueos

• Para acceder a un elemento de datos, una transacción Ti debe en primer lugar bloquear dicho elemento.

• Si éste ya se encuentra bloqueado por otra transacción en un modo incompatible, el gestor de control de concurrencia no concederá el bloqueo hasta que todos los bloqueos incompatibles que posean otras transacciones hayan sido liberados.

Page 17: Abd clase 9 y 10

Bloqueos

• De este modo Ti debe esperar hasta que se liberen todos los bloqueos incompatibles que posean otras transacciones.

• La transacción Ti puede desbloquear un elemento de datos que haya bloqueado en algún momento anterior.

Page 18: Abd clase 9 y 10

Bloqueos

• Nótese que la transacción debe poseer un bloqueo sobre un elemento de datos durante todo el tiempo que acceda a dicho elemento.

• Además, no siempre es aconsejable que una transacción desbloquee un elemento de datos inmediatamente después de finalizar su acceso sobre él, ya que puede dejar de asegurarse la secuencialidad.

Page 19: Abd clase 9 y 10

Ejemplo 1

• La transacción T1 transfiere 50 € desde la cuenta B a la A.

Page 20: Abd clase 9 y 10

Ejemplo 1

• La transacción T2 visualiza la cantidad total de dinero de las cuentas A y B, es decir, la suma A + B.

Page 21: Abd clase 9 y 10

Bloqueos

• Supóngase que los valores de las cuentas A y B son 100 € y 200 € respectivamente. Si estas dos transacciones se ejecutan secuencialmente, tanto en el orden T1, T2 como en el orden T2, T1, entonces la transacción T2 visualizará el valor 300 €.

Page 22: Abd clase 9 y 10

Bloqueos

• Si por el contrario estas transacciones se ejecutan concurrentemente, entonces puede darse la siguiente planificación.

Page 23: Abd clase 9 y 10

Planificación 1

Page 24: Abd clase 9 y 10

Bloqueos

• En ese caso la transacción T2 visualiza 250 €, lo cual es incorrecto.

• Dado que la transacción T1 desbloquea el elemento B demasiado pronto, lo cual provoca que T2 perciba un estado inconsistente.

Page 25: Abd clase 9 y 10

Bloqueos

• La planificación muestra los puntos en los que el gestor de control de concurrencia concede los bloqueos.

• La transacción que realiza una petición de bloqueo no puede ejecutar su siguiente acción hasta que el gestor de control de concurrencia conceda dicho bloqueo.

Page 26: Abd clase 9 y 10

Ejemplo 2

• Supóngase ahora que el desbloqueo se retrasa hasta el final de la transacción:

La transacción T3 corresponde a T1 con el desbloqueo retrasado

Page 27: Abd clase 9 y 10

Ejemplo 2

La transacción T4 corresponde a T2 con el desbloqueo retrasado

Se puede verificar que la secuenciade lecturas y escrituras de la planificación 1, que provoca que se visualice un total incorrecto de 250 €, ya no es posible con T3 y T4.

Page 28: Abd clase 9 y 10

Interbloqueos

• El uso de bloqueos puede conducir a una situación no deseada, denominada interbloqueos.

Page 29: Abd clase 9 y 10

Interbloqueos

• T4 posee un bloqueo sobre A en modo compartido y

T3 solicita un bloqueo sobre A en modo exclusivo,

T3 espera a que T4 desbloquee A.

• T3 posee en bloqueo sobre B en modo exclusivo y

T4 solicita un bloqueo sobre B en modo compartido,

T4 espera a que T3 desbloquee B.

Page 30: Abd clase 9 y 10

Interbloqueos

• Así se llega a un estado en el cual ninguna de las transacciones puede continuar su ejecución normal. Esta situación se denomina interbloqueo.

Page 31: Abd clase 9 y 10

Interbloqueos

• Cuando aparece un interbloqueo, el sistema debe retroceder una de las dos transacciones.

• Una vez que una de ellas se ha retrocedido, se desbloquean los elementos de datos que estuvieran bloqueados por la transacción.

• Estos elementos de datos están disponibles entonces para otra transacción, la cual puede continuar su ejecución.

Page 32: Abd clase 9 y 10

Bloqueos

• Si no se usan bloqueos, o se desbloquean los elementos de datos tan pronto como sea posible después de leerlos o escribirlos, se pueden obtener estados inconsistentes.

• Y si no se desbloquea un elemento de datos antes de solicitar un bloqueo sobre otro, pueden producirse interbloqueos.

Page 33: Abd clase 9 y 10

Bloqueos

• Sin embargo, en general, los interbloqueos son un mal necesario asociado a los bloqueos si se quieren evitar los estados inconsistentes.

Page 34: Abd clase 9 y 10

Bloqueos

• Los interbloqueos son absolutamente preferibles a los estados inconsistentes, ya que se pueden tratar retrocediendo las transacciones, mientras que los estados inconsistentes producen problemas en el mundo real que el sistema de base de datos no puede manejar.

Page 35: Abd clase 9 y 10

Protocolos de bloqueo

• Se exige que toda transacción del sistema siga un conjunto de reglas llamado protocolo de bloqueo, que indica el momento en que una transacción puede bloquear y desbloquear cada uno de los elementos de datos.

Page 36: Abd clase 9 y 10

Protocolos de bloqueo

• Los protocolos de bloqueo restringen el número de planificaciones posibles.

• El conjunto de tales planificaciones es un subconjunto de todas las planificaciones secuenciables posibles.

Page 37: Abd clase 9 y 10

Protocolos de bloqueo

Definiciones:

• Sean {T0,T1, > , Tn} un conjunto de transacciones que participan en la planificación S. Se dice que Ti precede a Tj en S, denotado por Ti → Tj, si existe un elemento de datos Q tal que Ti ha obtenido un bloqueo en modo A sobre Q, y Tj ha obtenido un bloqueo en modo B sobre Q más tarde y comp(A,B) = falso.

Page 38: Abd clase 9 y 10

Protocolos de bloqueo

• Si Ti → Tj entonces esta precedencia implica que en cualquier planificación secuencial equivalente, Ti debe aparecer antes que Tj.

Page 39: Abd clase 9 y 10

Protocolos de bloqueo

• Este grafo es similar al grafo de precedencia que utilizamos para comprobar la secuencialidad en cuanto a conflictos.

• Los conflictos entre instrucciones corresponden a modos de bloqueo incompatibles.

Page 40: Abd clase 9 y 10

Protocolos de bloqueo

Planificación legal:

• Una planificación S es legal bajo un protocolo de bloqueo dado si S es una planificación posible para un conjunto de transacciones que sigan las reglas del protocolo de bloqueo.

Page 41: Abd clase 9 y 10

Protocolos de bloqueo

• Se dice que un protocolo asegura la secuencialidad en cuanto a conflictos si y sólo si todas las planificaciones legales son secuenciables en cuanto a conflictos; en otras palabras, para todas las planificaciones legales la relación → asociada es acíclica.

Page 42: Abd clase 9 y 10

Concesión de bloqueos

• Cuando una transacción solicita un bloqueo de un modo particular sobre un elemento de datos y ninguna otra transacción posee un bloqueo sobre el mismo elemento de datos en un modo conflictivo, se puede conceder el bloqueo.

Page 43: Abd clase 9 y 10

Concesión de bloqueos

• Supóngase que la transacción T2 posee un bloqueo en modo compartido sobre un elemento de datos y que la transacción T1 solicita un bloqueo en modo exclusivo sobre dicho elemento de datos.

• Se sabe que T1 debe esperar a que T2 libere el bloqueo en modo compartido.

Page 44: Abd clase 9 y 10

Concesión de bloqueos

• Pero, es posible que haya una secuencia de transacciones que soliciten un bloqueo en modo compartido sobre ese elemento de datos, y que cada una de ellas libere el bloqueo un poco después de que sea concedido, de forma que T1 nunca obtenga el bloqueo en modo exclusivo sobre dicho elemento.

Page 45: Abd clase 9 y 10

Concesión de bloqueos

• La transacción T1 nunca progresa y se dice que tiene inanición.

Page 46: Abd clase 9 y 10

Concesión de bloqueos

¿Cómo se puede evitar la inanición de las transacciones?

• Al conceder los bloqueos de la siguiente manera:

• Cuando una transacción Ti solicita un bloqueo sobre un elemento de datos Q en un modo particular M, el gestor de control de concurrencia concede el bloqueo siempre que se cumpla:

Page 47: Abd clase 9 y 10

Concesión de bloqueos

1. No existe otra transacción que posea un bloqueo sobre Q en un modo que estéen conflicto con M.

2. No existe otra transacción que estéesperando un bloqueo sobre Q y que lo haya solicitado antes que Ti.

Page 48: Abd clase 9 y 10

Concesión de bloqueos

• De este modo, una petición de bloqueo nunca se quedará bloqueada por otra petición solicitada posteriormente.

Page 49: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• Este protocolo asegura la secuencialidad.

• Exige que cada transacción realice las peticiones de bloqueo y desbloqueo en dos fases:

• Fase de crecimiento.

• Fase de decrecimiento.

Page 50: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

1. Fase de crecimiento. Una transacción puede obtener bloqueos pero no puede liberarlos.

2. Fase de decrecimiento. Una transacción puede liberar bloqueos pero no puede obtener ninguno nuevo.

Page 51: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• Inicialmente una transacción está en la fase de crecimiento.

• La transacción adquiere los bloqueos que necesite.

• Una vez que la transacción libera un bloqueo, entra en la fase de decrecimiento y no puede realizar más peticiones de bloqueo.

Page 52: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

Ejemplo:

• Las transacciones T3 y T4 son de dos fases.

• Las transacciones T1 y T2 no son de dos fases.

Page 53: Abd clase 9 y 10

Ejemplo

Page 54: Abd clase 9 y 10

Ejemplo

Page 55: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• Nótese que no es necesario que las instrucciones de desbloqueo aparezcan al final de la transacción.

• Por ejemplo, en el caso de la transacción T3 se puede trasladar la instrucción desbloquear(B) justo después de la instrucción bloquear-X(A) y se sigue cumpliendo la propiedad del bloqueo de dos fases.

Page 56: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

Punto de bloqueo:

• Es el punto de la planificación en el cual la transacción obtiene su bloqueo final (el final de la fase de crecimiento).

Page 57: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• El protocolo de bloqueo de dos fases asegura la secuencialidad en cuanto a conflictos.

• No asegura la ausencia de interbloqueos.

Page 58: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• Por ejemplo: las transacciones T3 y T4 son de dos fases, pero en la planificación 2 llegan a un interbloqueo.

• En el bloqueo de dos fases puede ocurrir el retroceso en cascada.

Page 59: Abd clase 9 y 10

Ejemplo 3

• Cada transacción sigue el protocolo de bloqueo de dos fases peroun fallo de T5 después del paso leer(A) de T7 lleva a un retroceso en cascada de T6 y T7.

Page 60: Abd clase 9 y 10

Protocolo de bloqueo estricto de 2 fases

• Los retrocesos en cascada se pueden evitar por medio de una modificación del protocolo de bloqueo de dos fases que se denomina protocolo de bloqueo estricto de dos fases.

Page 61: Abd clase 9 y 10

Protocolo de bloqueo estricto de 2 fases

• Este protocolo exige que, además de que el bloqueo sea de dos fases, una transacción debe poseer todos los bloqueos en modo exclusivo que tome hasta que dicha transacción se complete.

Page 62: Abd clase 9 y 10

Protocolo de bloqueo estricto de 2 fases

• Este requisito asegura que todo dato que escribe una transacción no comprometida está bloqueado en modo exclusivo hasta que la transacción se completa, evitando que ninguna otra transacción lea el dato.

Page 63: Abd clase 9 y 10

Protocolo de bloqueo riguroso de 2 fases

• Otra variante del bloqueo de dos fases es el protocolo de bloqueo riguroso de dos fases, el cual exige que se posean todos los bloqueos hasta que se comprometa (COMMIT) la transacción.

Page 64: Abd clase 9 y 10

Ejemplo 4

• Si se emplea el protocolo de bloqueo de dos fases entonces T8 debe bloquear a1 en modo exclusivo.

• Por tanto, toda ejecución concurrente de ambas transacciones conduce a una ejecución secuencial.

• Nótese sin embargo que T8 sólo necesita el bloqueo en modo exclusivo sobre a1 al final de su ejecución, cuando escribe a1.

• Así, si T8 pudiera bloquear inicialmente a1 en modo compartido y después pudiera cambiar el bloqueo a modo exclusivo, se obtendría una mayor concurrencia, ya que T8 y T9 podrían acceder a a1 y a2 simultáneamente.

Page 65: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• Esta observación lleva a un refinamiento del protocolo de bloqueo de dos fases básico en el cual se permiten conversiones de bloqueo.

Page 66: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• Esto se refiere a un mecanismo para cambiar un bloqueo compartido por un bloqueo exclusivo y un bloqueo exclusivo por uno compartido.

• Se denota la conversión del modo compartido al modo exclusivo como subir, y la conversión del modo exclusivo al modo compartido como bajar.

Page 67: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• No se puede permitir la conversión de modos arbitrariamente.

• Por el contrario, la subida puede tener lugar sólo en la fase de crecimiento, mientras que la bajada puede tener lugar sólo en la fase de decrecimiento.

Page 68: Abd clase 9 y 10

Ejemplo 5

• Las transacciones T8 y T9 se pueden ejecutar concurrentemente bajo el protocolo de bloqueo de dos fases refinado.

Page 69: Abd clase 9 y 10

Ejemplo 5

• Nótese que se puede forzar a esperar a una transacción que intente subir un bloqueo sobre un elemento Q.

• Esta espera forzada tiene lugar si Q está bloqueado actualmente por otra transacción en modo compartido.

Page 70: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• Un esquema simple pero de uso extendido genera automáticamente las instrucciones apropiadas de bloqueo y desbloqueo para una transacción, basándose en peticiones de lectura y escritura desde la transacción:

Page 71: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

1.Cuando una transacción Ti realiza una operación leer(Q), el sistema genera una instrucción bloquear-C(Q) seguida de una instrucción leer(Q).

Page 72: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

2.Cuando Ti realiza una operación escribir(Q), el sistema comprueba si Ti posee ya un bloqueo en modo compartido sobre Q. Si es así, entonces el sistema genera una instrucción subir(Q) seguida de la instrucción escribir(Q). En otro caso el sistema genera una instrucción bloquear-X(Q) seguida de la instrucción escribir(Q).

Page 73: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

3.Todos los bloqueos que obtenga una transacción no se desbloquean hasta que dicha transacción se comprometa (COMMIT) o aborte (ABORT).

Page 74: Abd clase 9 y 10

Protocolo de bloqueo de 2 fases

• Los protocolos de bloqueo de dos fases básico y de bloqueo de dos fases con conversión de bloqueos generan sólo planificaciones secuenciables en cuanto a conflictos.

• Además, si se poseen los bloqueos hasta el final de la transacción, las planificaciones son sin cascada.