domingo, 26 de junio de 2011

Control De Concurrencia

Bloqueos

Control De Concurrencia en Base de Datos

Control De Concurrencia

Es la propiedad de los sistemas  que permiten que múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre si.

Técnicas de control de concurrencia

Los SGBD incluyen protocolos (conjuntos de reglas) para asegurar la propiedad de aislamiento de transacciones que se ejecutan concurrentemente. La mayoríía de las técnicas de control de concurrencia aseguran que los planes sean serializables. Estas técnicas se aplican conjuntamente a las técnicas de recuperación.

Marcas de Tiempo

Un enfoque para garantizar la seriabilidad de los planes supone usar marcas de tiempo para ordenar la ejecución de estas. Una marca de tiempo es un identificador único que
el SGBD crea para identificar una transacción. Las marcas de tiempo se asignan en el orden en que las transacciones se introducen en el sistema.

Generación de marcas de tiempo:
  • Contador
  • Reloj del sistema

La marca de tiempo de gránulo es un valor numérico asociado con un gránulo que almacena la marca de tiempo de la última transacción que operó sobre el gránulo.

Ordenación total de marcas de tiempo:
 
Se basa en asegurar que el acceso a los gránulos por las transacciones se realiza en el orden asignado inicialmente (que es el orden de inicio de las transacciones). Si esto no se cumple:
  • se debe abortar una transacción (la que produjo el conflicto)
  • se revierte la transacción y se relanza asignándole otra marca tiempo.
Multiversión
 
Este algoritmo consiste en ir guardando varias versiones del mismo dato (gránulo): se conservan los valores antiguos de los gránulos que se han actualizado.
  • Lectura:

Cuando una Transacción necesita leer algún gránulo, se elige una versión adecuada para mantener la seriabilidad de la planificación, si es posible.
  • Escritura:

Cuando una Transacción escribe un gránulo, escribe una nueva versión de ese gránulo, conservándose además la versión anterior.
  • Desventaja: 

Requiere más almacenamiento que los anteriores. Muchas veces estas versiones se aprovechan para la recuperación.
  • Abortar transacciones:

Se aborta la transacción que provocó el conflicto (la más reciente) y se le asigna una nueva marca de tiempo.

Técnicas de bloqueo

Las técnicas más empleadas para controlar el acceso concurrente de las transacciones se basan en el concepto de bloquear elementos de datos. Un bloqueo corresponde a una variable asociada al gránulo que describe las operaciones que se pueden realizar sobre él. Dado que dos operaciones de transacciones diferentes sobre el mismo gránulo que no sean permutables pueden provocar violaciones en el orden de serialización, pueden prevenirse las violaciones bloqueando los accesos a dicho gránulo.

Matriz binaria de compatibilidad: Es una mattriiz binaria que describe las operaciones compatibles ( 1 = sí,, 0 = no). 
                       C         leer   escribir
               leer         1       0
            escribir       0       0.
Se introducen operaciones adicionales en las transacciones:
bloquear(g, M): indica al planificador el comienzo de una operación
o conjunto de ellas de modo definido por M sobre el gránulo g.
desbloquear(g): indica al planificador el final de las operaciones
realizadas por la transacción correspondiente.
Un modo de operación M es un vector binario que indica las operaciiones que una T desea bloquear sobre el gránulo g.
p.e., si leer o escribir             modo M=(1 0) o (0 1) o (1 1)

Una transacción en el esquema del bloqueo deberá:
  • Emitir una operación bloquear(g,,M) antes de operar sobre g en el modo M.
  • Emitir una operación desbloquear(g) después de terminar la operación o operaciones correspondientes.
  • No emitirá una operación bloquear si ya tiene el bloqueo sobre el gránulo (excepto promociones).
  • No emitirá una operación desbloquear a menos que ya posea el bloqueo correspondiente.
El módulo de gestión de bloqueos del SGBD se ocupa de asegurar que se cumpla lo anterior.

Tecnicas de Validacion (optimistas)

No realizan ninguna verificación durante la ejecución. Los cambios se realizan sobre copias locales (no sobre los gránulos de la BD). Al final de la ejecución, existe una fase de validación que comprueba si cualquiera de las actualizaciones violaba la seriabilidad.
Este algoritmo tiene tres fases:
  • Fase de lectura: leo las valores de los gránulos en la BD pero no modifica ningún gránulo (copias locales).
  • Fase de validación: se efectúa una verificación para comprobar si hay algún problema con las operaciones realizadas.
  • Fase de escritura: si la fase anterior termina con éxito se actualiza la BD.
Si hay pocas interferencias (conflictos) entre transacciones (mayoritariamente son lecturas), casi todas se validarán sin dificultad (por ello se llaman optimistas).
Existen varios algoritmos de este tipo. Uno de ellos se basa en la asignación de marcas de tiempo.