Lo primero es lo primero, espero que esté familiarizado con algunos de los conceptos relacionados con las transacciones .
- ¿Qué es un Horario Recuperable ?
- ¿Qué son las reversiones en cascada y los horarios sin cascada?
- Determinar si una programación es serializable en conflicto .
Ahora, todos conocemos las cuatro propiedades que debe seguir una transacción. Sí, tienes razón, me refiero a las propiedades ACID . Las técnicas de control de concurrencia se utilizan para garantizar que se mantenga la propiedad de aislamiento (o no interferencia) de las transacciones que se ejecutan simultáneamente.
Una pregunta trivial que me gustaría plantear frente a usted (sé que debe saber esto, pero aún así) ¿por qué cree que deberíamos intercalar la ejecución de transacciones si puede generar problemas como el cronograma irrecuperable, la inconsistencia y muchos más? amenazas
¿Por qué no dejar que sean los horarios en serie y podamos vivir en paz, sin ninguna complicación?
Sí, el rendimiento afecta demasiado a la eficiencia, lo que no es aceptable.
Por lo tanto, una base de datos puede proporcionar un mecanismo que asegure que los cronogramas estén en conflicto o que la vista sea serializable y recuperable (también preferiblemente sin cascada). ¡ Obviamente, es demasiado tarde para probar un programa de Serializabilidad después de que se haya ejecutado!
Por lo tanto, necesitamos protocolos de control de concurrencia que garanticen la serialización.
Protocolos de control de concurrencia: permite programaciones concurrentes, pero asegúrese de que las programaciones sean serializables en conflicto/vista, y sean recuperables y tal vez incluso sin cascada.
Estos protocolos no examinan el gráfico de precedencia a medida que se crea, sino que un protocolo impone una disciplina que evita los horarios no serializables.
Los diferentes protocolos de control de concurrencia brindan diferentes ventajas entre la cantidad de concurrencia que permiten y la cantidad de sobrecarga que imponen.
Aprenderemos algunos protocolos que son importantes para GATE CS. Las preguntas sobre este tema son frecuentes y se recomienda aprender este concepto. (Al final de esta serie de artículos, intentaré enumerar todos los aspectos teóricos de este concepto para que los estudiantes los revisen rápidamente y puedan encontrar el material en un solo lugar). Ahora, pongámonos en marcha:
Diferentes categorías de protocolos:
- Protocolo basado en bloqueo
- Básico 2-PL
- Conservador 2-PL
- 2-PL estricto
- Riguroso 2-PL
- Protocolo basado en gráficos
- Protocolo de pedido de sello de tiempo
- Protocolo de granularidad múltiple
- Protocolo de múltiples versiones
Para GATE nos centraremos en los primeros tres protocolos.
Protocolos basados en bloqueo:
un bloqueo es una variable asociada con un elemento de datos que describe el estado del elemento de datos con respecto a la posible operación que se le puede aplicar. Sincronizan el acceso por transacciones concurrentes a los elementos de la base de datos. Se requiere en este protocolo que se debe acceder a todos los elementos de datos de manera mutuamente excluyente. Permítame presentarle dos bloqueos comunes que se utilizan y cierta terminología seguida en este protocolo.
- Bloqueo compartido (S): también conocido como bloqueo de solo lectura. Como sugiere el nombre, se puede compartir entre transacciones porque mientras mantiene este bloqueo, la transacción no tiene permiso para actualizar los datos en el elemento de datos. Se solicita el bloqueo S mediante la instrucción lock-S.
- Bloqueo exclusivo (X): el elemento de datos se puede leer y escribir. Esto es exclusivo y no se puede mantener simultáneamente en el mismo elemento de datos. Se solicita el bloqueo X mediante la instrucción lock-X.
Array de compatibilidad de bloqueo:
- A una transacción se le puede otorgar un bloqueo sobre un artículo si el bloqueo solicitado es compatible con los bloqueos que ya tienen otras
transacciones sobre el artículo. - Cualquier cantidad de transacciones puede tener bloqueos compartidos en un artículo, pero si alguna transacción tiene una exclusiva (X) en el artículo, ninguna otra transacción puede tener ningún bloqueo en el artículo.
- Si no se puede otorgar un bloqueo, se hace esperar a la transacción solicitante hasta que se hayan liberado todos los bloqueos incompatibles retenidos por otras transacciones. Entonces se concede el bloqueo.
Bloqueos de actualización / degradación: una transacción que mantiene un bloqueo en un elemento A puede, bajo ciertas condiciones, cambiar el estado de bloqueo de un estado a otro.
Actualización: AS(A) se puede actualizar a X(A) si T i es la única transacción que mantiene el bloqueo S en el elemento A.
Degradación: podemos degradar X(A) a S(A) cuando consideremos que no ya no queremos escribir en el elemento de datos A. Como mantuvimos X-lock en A, no necesitamos verificar ninguna condición.
Entonces, ahora se nos presentan los tipos de bloqueos y cómo aplicarlos. Pero espere, simplemente aplicando bloqueos si nuestros problemas se hubieran podido evitar, ¡entonces la vida habría sido tan simple! Si ha realizado la sincronización de procesos en el sistema operativo, debe estar familiarizado con un problema constante, ¡inanición y bloqueo mutuo! Los discutiremos en breve, pero para que sepa que tenemos que aplicar bloqueos, pero deben seguir un conjunto de protocolos para evitar problemas tan indeseables. En breve, utilizaremos el bloqueo de 2 fases (2-PL), que utilizará el concepto de bloqueos para evitar interbloqueos. Por lo tanto, al aplicar un bloqueo simple, es posible que no siempre produzcamos resultados serializables, lo que puede conducir a una inconsistencia de interbloqueo.
Problema con el bloqueo simple…
Considere el Horario Parcial:
T 1 | T 2 | |
---|---|---|
1 | bloquear-X(B) | |
2 | leer (B) | |
3 | B:=B-50 | |
4 | escribir (B) | |
5 | bloqueo-S(A) | |
6 | leer un) | |
7 | bloqueo-S(B) | |
8 | bloquear-X(A) | |
9 | …… | …… |
Interbloqueo: considere la fase de ejecución anterior. Ahora, T 1 tiene un bloqueo Exclusivo sobre B, y T 2 tiene un bloqueo Compartido sobre A. Considere la Declaración 7, T 2 solicita el bloqueo de B, mientras que en la Declaración 8 T 1 solicita el bloqueo de A. Esto, como puede notar, impone un Deadlock ya que ninguno puede proceder con su ejecución.
Inanición: también es posible si el administrador de control de concurrencia está mal diseñado. Por ejemplo: una transacción puede estar esperando un bloqueo X en un artículo, mientras que una secuencia de otras transacciones solicita y recibe un bloqueo S en el mismo artículo. Esto puede evitarse si el administrador de control de concurrencia está diseñado correctamente.
Uf… Espero que ahora sepa por qué debemos estudiar los Protocolos de control de concurrencia. Además, debe estar familiarizado con los conceptos básicos de los protocolos basados en bloqueo y los problemas con el bloqueo simple.
A continuación, analizaremos 2-PL y sus categorías, implementación junto con las ventajas y desventajas de usarlos. Las preguntas sobre los protocolos basados en Lock son comunes en GATE, también discutiremos más sobre los protocolos basados en gráficos, la marca de tiempo y algunas preguntas divertidas sobre la regla de escritura de Thomas. Hasta entonces, feliz aprendizaje.