Requisito previo: protocolos
de orden de marca de tiempo Los diversos esquemas de control de concurrencia han utilizado diferentes métodos y cada elemento de datos individual como la unidad en la que se realiza la sincronización. Un cierto inconveniente de esta técnica es que si una transacción Ti necesita acceder a toda la base de datos y se utiliza un protocolo de bloqueo, entonces Ti debe bloquear cada elemento de la base de datos. Es menos eficiente, sería más simple si T ipodría usar un solo bloqueo para bloquear toda la base de datos. Pero, si considera la segunda propuesta, esto no debería pasar por alto la cierta falla en el método propuesto. Supongamos que otra transacción solo necesita acceder a algunos elementos de datos de una base de datos, por lo que bloquear toda la base de datos parece innecesario y, además, puede costarnos una pérdida de concurrencia, que era nuestro objetivo principal en primer lugar. Negociar entre Eficiencia y Concurrencia. Usar granularidad.
Comencemos por comprender qué se entiende por granularidad.
Granularidad: es el tamaño del elemento de datos que se permite bloquear. Ahora , la granularidad múltiple significa dividir jerárquicamente la base de datos en bloques que se pueden bloquear y rastrear, necesita qué se debe bloquear y de qué manera. Tal jerarquía se puede representar gráficamente como un árbol.
Por ejemplo, considere el árbol, que consta de cuatro niveles de Nodes. El nivel más alto representa toda la base de datos. Debajo hay Nodes de tipo area ; la base de datos consta exactamente de estas áreas. El área tiene Nodes secundarios que se denominan archivos. Cada área tiene esos archivos que son sus Nodes secundarios. Ningún archivo puede abarcar más de un área.
Finalmente, cada archivo tiene Nodes secundarios llamados registros. Como antes, el archivo consta exactamente de los registros que son sus Nodes secundarios y ningún registro puede estar presente en más de un archivo. Por lo tanto, los niveles a partir del nivel superior son:
- base de datos
- área
- expediente
- registro
Figura: jerarquía del árbol de granularidad múltiple
Considere el diagrama anterior para el ejemplo dado, cada Node en el árbol se puede bloquear individualmente. Al igual que en el protocolo de bloqueo de 2 fases , utilizará modos de bloqueo compartido y exclusivo. Cuando una transacción bloquea un Node, ya sea en modo compartido o exclusivo, la transacción también bloquea implícitamente a todos los descendientes de ese Node en el mismo modo de bloqueo. Por ejemplo, si la transacción Ti obtiene un bloqueo explícito en el archivo F c en modo exclusivo, entonces tiene un bloqueo implícito en modo exclusivo en todos los registros que pertenecen a ese archivo. No necesita bloquear los registros individuales de F c explícitamente. esta es la principal diferencia entre el bloqueo basado en árboles y el bloqueo jerárquico para múltiples granularidades.
Ahora, con los bloqueos de archivos y registros simplificados, ¿cómo determina el sistema si el Node raíz se puede bloquear? Una posibilidad es que busque en todo el árbol, pero la solución anula todo el propósito del esquema de bloqueo de granularidad múltiple. Una forma más eficiente de obtener este conocimiento es introducir un nuevo modo de bloqueo, denominado modo de bloqueo de intención .
Bloqueo de modo de intención:
además de los modos de bloqueo S y X , hay tres modos de bloqueo adicionales con múltiples granularidades:
- Intention-Shared (IS): bloqueo explícito en un nivel inferior del árbol pero solo con bloqueos compartidos.
- Intention-Exclusive (IX): bloqueo explícito a un nivel inferior con bloqueos exclusivos o compartidos.
- Shared & Intention-Exclusive (SIX): el subárbol enraizado por ese Node está bloqueado explícitamente en modo compartido y el bloqueo explícito se realiza en un nivel inferior con bloqueos de modo exclusivo.
La array de compatibilidad para estos modos de bloqueo se describe a continuación:
Figura: jerarquía del árbol de granularidad múltiple
El protocolo de bloqueo de granularidad múltiple utiliza los modos de bloqueo de intención para garantizar la serialización. Requiere que una transacción Ti que intente bloquear un Node debe seguir estos protocolos:
- La transacción Ti debe seguir la array de compatibilidad de bloqueo.
- La transacción T i debe bloquear primero la raíz del árbol y puede bloquearla en cualquier modo.
- La transacción T i puede bloquear un Node en modo S o IS solo si T i actualmente tiene el padre del Node bloqueado en modo IX o IS.
- La transacción T i puede bloquear un Node en modo X, SIX o IX solo si T i actualmente tiene el padre del Node bloqueado en modo IX o SIX.
- La transacción T i puede bloquear un Node solo si Ti no ha desbloqueado previamente ningún Node (es decir, Ti es de dos fases).
- La transacción T i puede desbloquear un Node solo si T i actualmente no tiene ninguno de los hijos del Node bloqueado.
Observe que el protocolo de granularidad múltiple requiere que los bloqueos se adquieran en orden de arriba hacia abajo (de raíz a hoja), mientras que los bloqueos deben liberarse en orden de abajo hacia arriba (de hoja a raíz).
Como ilustración del protocolo, considere el árbol anterior y las transacciones:
- Digamos que la transacción T 1 lee el registro R a2 en el archivo F a . Luego, T 2 necesita bloquear la base de datos, el área A 1 y F a en modo IS (y en ese orden), y finalmente bloquear R a2 en modo S.
- Digamos que la transacción T 2 modifica el registro R a9 en el archivo F a . Luego, T 2 necesita bloquear la base de datos, el área A 1 y el archivo F a (y en ese orden) en modo IX, y finalmente bloquear R a9 en modo X.
- Digamos que la transacción T 3 lee todos los registros en el archivo F a . Luego, T 3 necesita bloquear la base de datos y el área A 1 (y en ese orden) en modo IS y, por último, bloquear F a en modo S.
- Digamos que la transacción T 4 lee toda la base de datos. Puede hacerlo después de bloquear la base de datos en modo S.
Tenga en cuenta que las transacciones T1 , T3 y T4 pueden acceder a la base de datos simultáneamente . La transacción T 2 puede ejecutarse simultáneamente con T 1 , pero no con T 3 o T 4 .
Este protocolo mejora la concurrencia y reduce la sobrecarga de bloqueo . El interbloqueo todavía es posible en el protocolo de granularidad múltiple, como lo es en el protocolo de bloqueo de dos fases. Éstos se pueden eliminar mediante el uso de ciertas técnicas de eliminación de puntos muertos .