Control de Concurrencia Carlos A. Olarte ([email protected]) BDII Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Contenido 1 Introducción 2 Protocolos basados en Bloqueos 3 Protocolos basados en Grafos 4 Protocolos de Marcas temporales 5 Esquemas Multiversión 6 Granularidad Múltiple 7 Interbloqueos Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Control de Concurrencia Mecanismo para asegurar la propiedad de aislamiento Protocolo de Bloqueo: Reglas acerca de cómo se deben acceder los recursos para generar planificaciones secuenciales (vistas o conflictos) Que se debe tener en cuenta (prevenir)? Inanición: Cuando una transacción debe esperar por siempre (∞) Interbloqueos: (dead locks) Perder la concurrencia (Todo secuencial) Largas esperas Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Protocolos basados en Bloqueos Modos de Bloqueo: Compartido o Exclusivo Conflicto: Modos de bloqueo incompatibles Una planificación es legal para un protocolo de bloqueo si dicha planificación es posible para un conjunto de transacciones que siguen las reglas del protocolo de bloqueo Matriz de Compatibilidad: Indica bloqueo son compatibles. X X F C F Carlos A. Olarte ([email protected]) BDII cuando dos modos de C F V Control de Concurrencia Protocolo de Bloqueo de 2 Fases Consta de una fase de Crecimiento en la que se adquieren bloqueos (no se pueden liberar) y una fase de Decrecimiento cuando se liberan bloqueos (y no se pueden obtener) Punto de Bloqueo donde se obtiene el último bloqueo No asegura la aparición de interbloqueos ni de retrocesos en cascada Las transacciones se pueden secuenciar a partir de su punto de bloqueo generando planificaciones SECC (demostrar) Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Continuación Variantes del PB. 2 Fases Protocolo Estricto de 2 fases: Todos los bloqueos en modo exclusivo deben mantenerse hasta el final de la transacción Protocolo Riguroso de 2 fases: Todos los bloqueos deben mantenerse hasta el compromiso de la transacción Protocolo Refinado de 2 fases: Dos nuevas operaciones: Subir: Pasar de modo C a modo X (solo en fase de crecimiento) Bajar: Pasar de modo X a modo C (solo en fase de decrecimiento) Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Protocolo del Árbol Requiere un orden parcial → del conjunto de elementos de datos (di → dj si para acceder a di y a dj se requiere primero acceder a di . Todos los bloqueos se realizan en modo X . Las reglas del protocolo: El primer bloqueo puede ser sobre cualquier elemento Ti puede bloquear un elemento Q solamente si posee un bloqueo sobre el padre de Q Se pueden desbloquear elemento en cualquier orden Ti no puede bloquear elementos que previamente ha desbloqueado Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Continuación Ventajas: Previene los interbloqueos y se permiten desbloquear recursos antes del compromiso (aumento de concurrencia) Desventajas: Tener que bloquear el padre. Establecer el orden parcial (→) no siempre es posible Existirán planificaciones que sean legales bajo el P2F y no bajo el P.Arbol? y viceversa? Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Protocolo de Marcas Temporales Cada transacción cuenta con una marca temporal M(Ti ) Las planificaciones generadas deben ser equivalentes al ordenamiento secuencial (cronológico) de las marcas Sobre cada recurso Q se cuenta con MTE (Q) (última transacción –MT– que escribió Q) y MTL(Q) (última transacción –MT– que leyó Q) Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Continuación Protocolo de ordenación Para operaciones de lectura en Ti 1 2 Si MT (Ti ) < MTE (Q) se rechaza Ti puesto que se está leyendo un valor sobre-escrito. Si MT (Ti ) ≥ MTE (Q) se acepta la operación y se actualiza MTL(Q) por MT (Ti ). Para operaciones de escritura de Ti 1 2 3 Si MT (Ti ) < MTL(Q) se rechaza la escritura puesto que el valor producido no fue el leido Si MT (Ti ) < MTE (Q) se rechaza puesto que se está escribiendo algo obsoleto Se acepta la escritura y se actualiza MTE (Q) por MT (Ti ) Al retroceder la transacción se le asigna un nuevo MT (Ti ) y vuelve a empezar (no hay interbloqueos) Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Regla de Escritura de Thomas Se modifica la segunda regla de escritura del protocolo de ordenación de M.T para ignorar la escritura Asegura secuencialidad en cuanto a vistas Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Esquemas Multiversión Cada escritura de Q genera una nueva versión de Q Se debe asegurar que las lecturas seleccionen la versión de Q apropiada Cada versión de Q (Qk ) se le asigna: contenido, MTE (Qk ) = MT (Ti ) y MTL(Qk ) (última transacción que leyó la versión Qk ). Se mantiene la secuencialidad mediante las siguientes reglas: 1 2 Si Ti ejecuta L(Q) el valor retornado es el valor de Qk Si Ti ejecuta E (Q) : 1 2 3 Si MT (Ti ) < MTL(Qk ) se retrocede Ti Si MT (Ti ) = MTE (Qk ) se sobreescribe Qk En otro caso aparece una nueva versión de Q Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Continuación Ventaja: Asegura que las lecturas nunca fallan Desventaja: Conflictos resueltos con retrocesos Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Granularidad Múltiple Matriz de Compatibilidad IC IX C IXC X IC V V V V F IX V V F F F C V F V F F Jerarquı́a de Granularidad Si se bloquea el padre (Bloqueo Explicito) se bloquean sus descendientes (Bloqueos Implı́citos) Aparecen tres nuevos modos: Intencional Exclusivo (IX ), I. Compartido (IC ) e I. Compartido-Exclusivo(ICX ) Los bloqueos se realizan de arriba hacia abajo y los desbloqueos en orden inverso Carlos A. Olarte ([email protected]) BDII Control de Concurrencia IXC V F F F F X F F F F F Reglas del Protocolo Ti puede bloquear Q si: 1 Se observa la matriz de compatibilidad 2 La raı́z se bloquea en cualquier modo 3 Ti puede bloquear Q en modo C o IC solo si Ti está actualmente bloqueando el padre de Q en modo IX o IC 4 Ti puede bloquear Q en modo X ,ICX o IX solo si Ti está actualmente bloqueando el padre de Q en modo IX o ICX 5 Ti debe ser de dos fases 6 Ti no puede desbloquear Q si algún descendiente de Q esta actualmente bloqueado Por qué son necesarios los bloqueos intencionales? Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Interbloqueos (Dead Locks) Un sistema de encuentra en un Interbloqueo cuando existe un conjunto de transacciones {T1 , T2 , ..., Tn } tal que para todo i ∈ [1..n − 1], Ti espera por Ti+1 y Tn espera por T1 . Como se tratan los interbloqueos? Esquemas Preventivos: Nunca ocurre el interbloqueo Esquemas de Detección y Recuperación Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Esquemas Preventivos Por lı́mite de tiempo: Después de cierto tiempo se retrocede la transacción (fácil de implementar aunque no siempre que un recurso se encuentre ocupado por mucho tiempo implica la existencia de un interbloqueo) El protocolo de bloqueo asegura la no aparición puesto que exige un orden para adquirir bloqueos como en el protocolo del árbol Expropiar y retroceder: Esperar Morir: Si Ti solicita un recurso ocupado por Tj espera solamente si MT (Ti ) < MT (Tj ) de lo contrario Ti se retrocede (Muere). En este caso no hay expropiación Herir-Esperar: Como el caso anterior con la diferencia que es Tj quien se retrocede Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Detección y Recuperación Se requiere un esquema que: Mantenga la información necesaria los bloqueos: Construir un grafo de espera (hti , tj i ∈ A si ti espera por un recurso de tj ) Ejecute un algoritmo de detección: En este caso detección de ciclos en el grafo de espera Ejecute un mecanismo de recuperación en caso de ser necesario: Seleccionar una transacción (preferiblemente la de menor costo) Retroceder de la transacción escogida Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Operaciones de Inserción y Eliminación Para eliminar un recurso se presentan los conflictos similares que para una escritura. Por tanto: En el protocolo de 2 fases, se debe solicitar un bloqueo en modo exclusivo sobre Q antes de eliminarlo En el protocolo de marcas temporales se adicionan reglas similares a las reglas de escritura Fenómeno Fantasma: Suponga que Ti efectúa select count(*) from x y Tj insert into x.... Si Ti no utiliza la nueva tupla, la planificación secuencial que se debe obtener es hti , tj i. Como las dos transacciones están en conflicto por una tupla que no tienen en común este fenómeno se conoce como fenómeno fantasma Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Algunos Ejemplos Prácticos Commit / Rollback Bloqueos (Esperas hasta comprometer o retroceder) Versiones (lecturas antes de comprometer) Detección de Interbloqueos Granularidad a nivel de registro (no a nivel de columna) SELECT ... FOR UPDATE Fenómeno Fantasma Cambios del nivel de Consistencia Carlos A. Olarte ([email protected]) BDII Control de Concurrencia Niveles Débiles de Consistencia La norma SQL-92 define niveles de consistencia que no siempre garantizan secuencialidad: Secuenciable Lectura Repetible: Solo se pueden leer registros comprometidos. Entre dos lecturas del mismo recurso, ninguna otra transacción puede modificar dicho recurso Compromiso de Lectura: Solo se puede leer registros comprometidos pero no se asegura la lectura repetible Sin compromiso de Lectura: Se permite leer registros no comprometidos Carlos A. Olarte ([email protected]) BDII Control de Concurrencia