Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Repaso Elementos de Bases de Datos Hasta ahora vimos que si constamos con un DBMS que maneje transacciones, podemos garantizar que las transacciones van a respetar las siguientes propiedades: Dpto.Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Consistencia (consistency) Atomicidad (atomicity), Aislación (isolation) Durabilidad (durability). Lic. María Mercedes Vitturini [mvitturi@cs.uns.edu.ar] Clase 16 A cargo del prgdor A cargo del DBMS 1er. Cuatrimestre de 2004 Elementos de Bases de Datos Clase 16 Concurrencia 2 Concurrencia y Serilizabilidad Se denomina planificación a una secuencia de ejecución Cuando varias transacciones se ejecutan concurrentemente, no puede asegurarse que la planificación sea en serie. Una planificación en serie es una planificación en donde las instrucciones pertenecientes a una transacción aparecen todas juntas. En entornos multiprogramados, es posible ejecutar varias transacciones de manera concurrente. Una planificación es serializable si el resultado de su ejecución equivale a alguna planificación en serie. Cuando se ejecutan varias transacciones de manera concurrente, se puede perder la consistencia de la base de datos aún cuando cada una de las transacciones individuales sea correcta Garantizar planificaciones serializables es el modo de garantizar la propiedad de aislamiento de las transacciones. Elementos de Bases de Datos Clase 16 Elementos de Bases de Datos Clase 16 3 Ejemplos Serializabilidad de Conflictos T0 T1 T2 read(X) El algoritmo de Prueba de Serializabilidad de Conflictos consiste en la construcción de un grafo dirigido. Si el mismo no tiene ciclos, se puede asegurar que la planificación es serializable en conflictos; de lo contrario, no lo es. Si la planificación es serializable en conflictos entonces es serializable. Sin embargo, que una planificación no sea serializable en conflictos no significa que no sea serializable. A continuación, presentaremos otra forma de serializabilidad (de vistas) que requiere de un algoritmo de verificación más complejo. Elementos de Bases de Datos Clase 16 4 5 Planificación 1 T0 X = X + 10 read (X) read (Y) read(Z) Z= Z * 10 T2 T1 write (Z) read (Z) Z = X+Y+Z write (Z) write (X) Z=X write (Z) El grafo no contiene ciclos, por lo tanto la planificación 1 es Serializable en cuanto a Conflictos. Esta planificación concurrente es equivalente a la ejecución en serie <T2, T1, T0> Elementos de Bases de Datos Clase 16 6 1 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Serializabilidad de Vistas Ejemplos T0 T1 T2 Planificación 2 read(X) Dos planificaciones S y S’ son serializables en cuanto a vistas si se cumple que: T0 read (X) read (Y) read(Z) Z= Z * 10 T2 write (Z) read (Z) Z = X+Y+Z write (Z) X = X + 10 write (X) Z=X write (Z) T1 El grafo si contiene ciclos, por lo tanto la planificación 2 NO es Serializable en cuanto a Conflictos. Esto no significa que la planificación no sea serializable. Queda como ejercicio para el lector la comprobación Elementos de Bases de Datos Clase 16 1. Para cada dato Q, si Ti lee el valor inicial de Q en S, entonces Ti debe leer el valor inicial de Q en S’. 2. Para cada dato Q, si Ti ejecuta Read(Q) en S y ese valor fue producido por Tj (si existe), entonces Ti debe leer en S’ el valor producido por Tj. 3. Para cada dato Q, la transacción (si existe) que ejecuta Write(Q) final en la planificación S debe ejecutar la operación final Write(Q) en la planificación S´. Elementos de Bases de Datos Clase 16 7 8 Serializabilidad de Vistas Serializabilidad de Vistas T1 Las condiciones 1 y 2 aseguran que cada transacción lee los mismos valores en ambas planificaciones y, por lo tanto, realiza el mismo cálculo. La condición 3, junto con las condiciones 1 y 2, asegura que ambas planificaciones resultan en el mismo estado final del sistema. Una planificación es serializable en vistas si es equivalente en vistas a una planificación en serie. La equivalencia en vistas es menos rigurosa que la equivalencia en conflictos. Esto es, toda planificación serializable en conflictos es serializable en vistas pero la recíproca no es cierta. Elementos de Bases de Datos Clase 16 9 Pruebas de Serializabilidad de Vistas T2 T3 Read(Q); Write(Q). Write(Q). Write(Q). Esta planificación es serializable en vistas pues es equivalente a la planificación <T1,T2,T3>. Las transacciones T2 y T3 realizan escrituras sobre Q sin haber leído el valor de Q. Este tipo de escrituras se denominan escrituras ciegas. Las escrituras ciegas aparecen en cualquier planificación serializable en vistas que no sea serializable en conflictos. Elementos de Bases de Datos Clase 16 10 Pruebas de Serializabilidad de Vistas Para determinar la serializabilidad de vistas en una planificación, necesitamos construir un grafo de precedencia etiquetado. 1. Se añade una arista Ti0→ Tj si la Sea S una planificación que involucra a las transacciones {T1,T2,...,Tn}. aquellas transacciones que no conducen a Tf (solamente realizan lecturas). 3. Por cada dato Q tal que Tj lee el valor de Q escrito por Ti, y Tk ejecuta Write(Q) tal que Tk ≠ Tb se hace lo siguiente: Se agregan dos transacciones ficticias Tb y Tf. Tb (transacción inicial) escribe cada dato leído por las transacciones de S. Tf (transacción final) lee cada dato escrito por las transacciones de S. Elementos de Bases de Datos Clase 16 11 transacción Tj lee el dato Q escrito por Ti. 2. Eliminar las transacciones inútiles, esto es, Continúa ... Elementos de Bases de Datos Clase 16 12 2 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Pruebas de Serializabilidad de Vistas Pruebas de Serializabilidad de Vistas Las reglas a y b son casos especiales que resultan de que Tb y Tf representan la primera y última transacción respectivamente. La regla 3c dice que si Ti escribe un dato que lee Tj y Tk escribe el mismo dato entonces Tk debe aparecer antes de Ti o bien después de Tj. Al aplicar la regla 3c no se requiere que Tk esté antes de Ti y después de Tj. Solamente se exige que o bien preceda a Ti, o bien suceda a Tj. Si el grafo de precedencia no contiene ciclos entonces la planificación es serializable en vistas. No obstante, la aparición de un ciclo (cuando existen etiquetas distintas de 0) no implica que la planificación no sea serializable Elementos de Bases de Datos en vistas. Clase 16 14 Por cada dato Q tal que Tj lee el valor de Q escrito por Ti, y Tk ejecuta Write(Q) tal que Tk ≠ Tb se hace lo siguiente: a. Si Ti=Tb y Tj≠Tf entonces se inserta en el grafo la arista Tj0→ Tk. b. Si Ti≠Tb y Tj=Tf entonces se inserta en el grafo la arista Tk0→ Ti. c. Si Ti≠Tb y Tj ≠ Tf entonces se insertan en el grafo las aristas Tkp→ Ti y Tjp→ Tk, donde p es un número de etiqueta no usada en el grafo etiquetado. Elementos de Bases de Datos Clase 16 13 Planificación 1: no serializable en vistas Pruebas de Serializabilidad de Vistas 1. Se añade una arista Ti0→ Tj si la transacción Tj lee el dato Q escrito por Ti. 2. Eliminar las transacciones inútiles, esto es, aquellas transacciones que no conducen a Tf (solamente realizan lecturas). 3. Por cada dato Q tal que Tj lee el valor de Q escrito por Ti, y Tk ejecuta Write(Q) tal que Tk ≠ Tb se hace lo siguiente: a. Si Ti=Tb y Tj≠Tf entonces se inserta en el grafo la arista Tj0→ Tk. b. Si Ti≠Tb y Tj=Tf entonces se inserta en el grafo la arista Tk0→ Ti. c. Si Ti≠Tb y Tj ≠ Tf entonces se insertan en el grafo las aristas Tkp→ Ti y Tjp→ Tk, donde p es un número de etiqueta no usada en el grafo etiquetado. Elementos de Bases de Datos Clase 16 T2 Write(Q). Regla 1 0 Tb 0 T1 Regla 1 Regla 3b Elementos de Bases de Datos Clase 16 T1 Read(Q); T2 Read(Q); Write(Q). Write(Q). Equivale a la Planificación: Tf (T1,T2,T3) Regla 3a Regla 3b 0 0 T2 T3 Write(Q). Write(Q). T1 16 Planificación 3: serializable en vistas T3 Write(Q). 0 T2 0 Write(Q). Regla 1 Tf Regla 3a 0 Read(Q); Tb T2 Write(Q). 15 Planificación 2: serializable en vistas T1 T1 Read(Q); 0 T3 Tf 13c 01 Regla 1 T1 03a 13c T2 01/3b 01 T3 03a3b 0 Los subíndices en las etiquetas indican las reglas que generan el arco. Regla 3a o 3b Elementos de Bases de Datos Clase 16 Tb 17 Elementos de Bases de Datos Clase 16 18 3 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Planificación 3: serializable en vistas Tb Tf 1 0 0 1 T1 0 0 T2 Tb 0 T3 0 T1 0 0 T2 1ra T1 0 0 T2 Elementos de Bases de Datos Clase 16 19 T2 T3 Read(Y) 0 T1 Read(X) Write(X). Tb Write(X). T1 T1 01/3a 13c T2 03b 13c Los arcos con etiqueta 1 representan 2 opciones distintas. Tf Grafo Acíclico.☺ Equivale a (T1,T3,T2) T3 T2 0 1 0 T3 Tf 0 0 T3 0 0 Tb 03a/3b 0 1 0 0 01 T2 0 Tf 01 0 1 Tf 0 Write(Y); 01 0 0 Write(X). Tb 20 Planificación 5: serializable en vistas Tb Read(X); T2 01 (T1,T2,T3) Planificación 5: serializable en vistas 01 01 T1 Equivale a la Planificación: Elementos de Bases de Datos Clase 16 Tf 01 01 Grafo Acíclico.☺ 0 T3 T1 Read(Y); Write(Z). 2da Opción: Tf 0 1 T2 Tb Tb 0 Opción: Grafo Cíclico. 0 T3 T1 Read(X); Write(X); Read(X); Write(Y). Tf 1 0 Planificación 4: no serializable en vistas Los arcos con etiqueta 1 representan 2 opciones distintas. T1 0 1 T2 0 T3 1ra Opción: 2da Opción: Grafo Cíclico. 0 Elementos de Bases de Datos Clase 16 21 Elementos de Bases de Datos Clase 16 22 Ejercicio Control de concurrencia Dada la siguiente planificación: T1 T2 T3 Una propiedad fundamental de una transacción es el aislamiento. Esta propiedad debe respetarse aun en entornos concurrentes. Read(X); Read(Y) Write(X). Read(X) Write(Y); Write(X). Write(X). 1) Determinar si es serializable en vistas. 2) Si lo es, encontrar una planificación serial equivalente. Verificar los resultados asignándole valores a los datos X e Y, asumiendo que en cada transacción que realiza un Write sobre un mismo dato, se modifica el mismo. Elementos de Bases de Datos Clase 16 23 Es necesario que el sistema controle la interacción entre las transacciones concurrentes; dicho control se lleva a cabo a través de esquemas de control de concurrencia. A continuación vamos a ver esquemas de control de concurrencia basados en la propiedad de serializabilidad. Inicialmente estudiaremos algunos protocolos de bloqueo. Elementos de Bases de Datos Clase 16 24 4 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Protocolos basados en bloqueo (locking) Otorgamiento de bloqueos Una forma de asegurar la serializabilidad es exigir que el acceso a los datos se haga de modo mutuamente excluyente. Tipos de bloqueo: Compartido (Lock-S): si una transacción T ha obtenido un bloqueo compartido sobre un dato Q entonces T puede leer el dato pero no escribir Q. Exclusivo (Lock-X): si una transacción T ha obtenido un bloqueo exclusivo sobre un dato Q entonces T puede leer y escribir Q. Este tipo de protocolos puede caer en deadlock. Elementos de Bases de Datos Clase 16 25 Planificación (parcial) 6: en deadlock T1 T2 Lock-X(B) Read(B) B := B - 50 Write(B) Lock-S(A) Read(A) Lock-S(B) Lock-X(A) ... ... T2 pide un lock compartido de B pero espera a que lo libere T1. T1 pide un lock exclusivo de A pero espera a que lo libere T2. Elementos de Bases de Datos Clase 16 27 Compatibilidad de bloqueos: Compatibilidad Lock-S Lock-X Lock-S Si No Lock-X No No Elementos de Bases de Datos Clase 16 26 Protocolos basados en bloqueo (locking) Si se intenta lograr un máximo de concurrencia desbloqueando datos tan pronto como sea posible, podemos obtener estados inconsistentes. Si se retiene demasiado tiempo un dato, pueden ocurrir situaciones de deadlock. Los protocolos de bloqueos que aseguran serializabilidad que vamos a estudiar: Protocolo de Bloqueo de Dos Fases. Protocolo Basado en Grafos. Elementos de Bases de Datos Clase 16 28 Protocolo de bloqueo de dos fases Otorgamiento de bloqueos Para evitar inanición (starvation) de transacciones, esto es, transacciones que nunca alcanzan a disponer de los recursos que necesitan, se debe respetar cierta política de otorgamiento de bloqueos. Cuando una transacción Ti requiere un bloqueo sobre el dato Q en un modo M, el bloqueo es concedido si: No existe otra transacción Tj teniendo un bloqueo sobre Q en un modo incompatible con M. No existe otra transacción Tj esperando un bloqueo sobre Q que hizo el requerimiento de bloqueo antes que la transacción Ti. Elementos de Bases de Datos Clase 16 Si una transacción requiere un bloqueo sobre un item de dato particular y otra transacción tiene un bloqueo no compatible con el requerido sobre el mismo item de dato entonces no se puede conceder el bloqueo. 29 Un protocolo que garantiza la serializabilidad es el protocolo de bloqueo de dos fases, el cual requiere que cada transacción realice sus solicitudes de bloqueo y desbloqueo en dos fases: Fase de Crecimiento: Una transacción puede obtener bloqueos pero no puede liberar ningún bloqueo. Fase de Encogimiento: Una transacción puede liberar bloqueos pero no puede obtener ningún bloqueo nuevo Elementos de Bases de Datos Clase 16 30 5 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Retroceso en cascada en planificación parcial Protocolo de Bloqueo de Dos Fases T1 El protocolo de bloqueo de dos fases sufre de las siguientes desventajas: Posibilidad de que alguna planificación caiga en deadlock. Puede generar retrocesos en cascada (cascading rollback), esto es,antes la falla de una transacción, se genera que fallen otras transacciones. Puede generar planificaciones no recuperables, como resultado de un retroceso en cascada Elementos de Bases de Datos Clase 16 31 Otros protocolos de bloqueo de dos fases 33 Protocolo de bloqueo de dos fases enriquecido Inicialmente una transacción está en la fase de crecimiento. La transacción adquiere todos los bloqueos que necesita. Una vez que la transacción libere un bloqueo entra en la fase de encogimiento y no podrá solicitar más bloqueos. Este protocolo garantiza la serializabilidad en conflictos pero no garantiza que no se presenten situaciones de deadlock. En este protocolo no es posible que una transacción que usa un dato modifique el modo de acceso al mismo (de exclusivo a compartido o de compartido a exclusivo). Para obtener mayor concurrencia se cuenta con dos modos de conversión: Upgrade: de modo compartido a exclusivo. Downgrade: de modo exclusivo a compartido. Elementos de Bases de Datos Clase 16 T3 Lock-X(A) Read(A) Lock-S(B) Read(B) Write(A) Unlock(A) Falla T1 luego del Read(A) de T3 Lock-X(A) Read(A) Write(A) Unlock(A) ... Lock-S(A) Read(A) ... ... Retroceso en cascada de T2 y T3 Elementos de Bases de Datos Clase 16 32 Dos Fases Estricto y Riguroso El protocolo de bloqueo de dos fases estricto es similar al protocolo de bloqueo de dos fases pero donde los bloqueos en modo exclusivo deben mantenerse hasta que la transacción alcance el estado cometido. Esto asegura que cualquier dato escrito por una transacción no cometida esté bloqueado en modo exclusivo hasta que la transacción esté cometida. El protocolo de bloqueo de dos fases riguroso mantiene todos los bloqueos hasta que la transacción alcance el estado cometido. Estos dos protocolos son ampliamente utilizados en sistemas comerciales de bases de datos. Elementos de Bases de Datos Clase 16 T2 35 El protocolo de bloqueo de dos fases estricto no permite a una transacción acceder a los datos generados por otra transacción no cometida. Soluciona el problema de retrocesos en cascada. Sigue teniendo problemas de deadlock. El protocolo de bloqueo de dos fases riguroso pretende que una transacción solicite todos los bloqueos de los datos que necesita al inicio de la transacción y los libere cuando la transacción finaliza. Soluciona el problema de retrocesos en cascada y el problema de deadlock, sin embargo incorpora el problema de inanición. Elementos de Bases de Datos Clase 16 34 Protocolo de bloqueo de dos fases enriquecido Cuando una transacción T realiza una operación Read(Q) se ejecuta: Lock-S(Q); Read(Q). Cuando una transacción T realiza una operación Write(Q) se ejecuta: Si T tiene un acceso compartido entonces ejecuta: Upgrade(Q); Write(Q). De lo contrario, T ejecuta: Lock-X(Q); Write(Q). Una mejora sustancial a este protocolo se logra imponiendo una estructura u ordenación sobre el conjunto de datos de la base de datos. Elementos de Bases de Datos Clase 16 36 6 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 T1 Ejemplo: Protocolo de Bloqueo T2 lock-s (A) Ejemplo: Protocolo de Bloqueo dos Fases read (A) unlock (A) lock-s (B) read (B) Dadas las transacciones T1: read(A) read(B) write(A) write(B) T2: read(D) read(A) write(A) write(D) Para las transacciones anteriores unlock (B) lock-s (D) read (D) unlock (D) lock-s (A) FC read (B) lock-x (D) read (D) write (A) unlock (A) lock-x (A) write (A) lock-x (B) write (B) unlock (A) read (A) write (A) FD unlock (A) write (B) write (D) lock-x (D) T1 write (D) Elementos de Bases de Datos Clase 16 37 Ejemplo: Protocolo de Bloqueo dos Fases Estricto T2 lock-s (A) read (B) T1 unlock (D) 38 T2 lock-x (A) read (A) lock-x (B) Para las transacciones anteriores read (A) lock-s (B) read (B) lock-x (D) read (D) lock-x (A) lock-s (D) write (A) read (D) Protocolo de Bloqueo de dos Fases Estricto. La planificación resultante serializable. lock-s (A) read (A) upgrade (A) upgrade(A) … FD unlock (B) unlock (B) unlock (D) FC write (A) Protocolo de Bloqueo de dos Fases. La planificación resultante es serializable. lock-x (A) Elementos de Bases de Datos Clase 16 Protocolo de Bloqueo de dos Fases Enriquecido. La planificación resultante cae en deadlock. read (A) lock-x (B) lock-x (A) unlock (A) Para las transacciones anteriores T2 read (A) unlock (A) Protocolo de bloqueo SIN imponer dos fases. La planificación resultante no es serializable. Ejemplo: Protocolo de Bloqueo dos Fases Enriquecido T1 lock-x (A) … write (B) unlock (A) unlock (B) read (A) write (A) write (D) unlock (A) unlock (D) Elementos de Bases de Datos Clase 16 Protocolo del árbol 40 Conjunto de Transacciones En el protocolo del árbol, el único tipo de bloqueo permitido es Lock-X. Para cada transacción T, su primer bloqueo puede ser sobre cualquier dato. A partir de ese momento, T puede bloquear un dato Q sólo si T bloquea actualmente al padre de Q. Los datos pueden desbloquearse en cualquier momento. Si T bloqueó y desbloqueó un dato Q, no puede volver a bloquearlo nuevamente. Elementos de Bases de Datos Clase 16 Elementos de Bases de Datos Clase 16 39 41 T1 T2 T3 T4 Lock-X(B) Lock-X(E) Lock-X(D) Unlock(B) UnLock(E) Lock-X(G) Unlock(D) Unlock(G) Lock-X(D) Lock-X(H) Unlock(D) Unlock(H) Lock-X(B) Lock-X(E) Unlock(E) Unlock(B) Lock-X(D) Lock-X(H) Unlock(D) Unlock(H) Elementos de Bases de Datos Clase 16 42 7 Universidad Nacional del Sur – Departamento de Ciencias e Ingeniería de la Computación Elementos de Bases de Datos – 2do. Cuatrimestre de 2004 Planificación 6 serializable Grafo de base de datos T1 A C B Lock-X(E) Lock-X(D) Unlock(B) Unlock(E) F D G E Lock-X(G) Unlock(D) I H T2 T3 T4 Lock-X(B) J Unlock(G) Elementos de Bases de Datos Clase 16 43 Lock-X(D) Lock-X(H) Unlock(D) Unlock(H) Lock-X(B) Lock-X(E) Unlock(E) Unlock(B) Elementos de Bases de Datos Clase 16 Lock-X(D) Lock-X(H) Unlock(D) Unlock(H) 44 Temas de la clase de hoy Serializabilidad. Serializabilidad en cuanto a vistas. Pruebas de serializabilidad en cuanto a vistas. Grafo de serializabilidad en vistas etiquetado. Esquemas de control de concurrencia Esquemas de control basados en bloqueo Protocolo de Bloqueo Protocolo de Bloqueo de Dos Fases, Dos Fases Enriquecido, Dos Fases Estricto, Dos Fases Riguroso Protocolo de Arbol Bibliografía “Fundamentos de Bases de Datos” – A. Silberschatz. Capítulos 13 y 14. Databases and Transaction Procesing - Philip Lewis. Capítulo 23. Elementos de Bases de Datos Clase 16 45 8