concurrencia, transacciones, accesos y bloqueos

Anuncio
CONCURRENCIA, TRANSACCIONES,
ACCESOS Y BLOQUEOS
Introducción
3
1.
CONTROL DE CONCURRENCIA
3
2.
TRANSACCIONES Y ACCESOS
4
3.
TRANSACCIONES Y ESTADOS DE LA BASE DE DATOS
5
4.
ESTADOS DE LA TRANSACCIÓN
6
5.
MANEJADOR DE TRANSACCIONES
7
6.
BLOQUEOS
8
6.1
Tipos de bloqueos
9
6.2
Protocolos de bloqueos
10
6.3
Problemas con bloqueos
12
6.4
Marcas de tiempo
14
BIBLIOGRAFÍA
15
GLOSARIO
16
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Mapa conceptual
Concurrencia, Transacciones, Accesos y Bloqueos
2
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
CONCURRENCIA, TRANSACCIONES,
ACCESOS Y BLOQUEOS
INTRODUCCIÓN
Los administradores de base de datos tienen varias responsabilidades en
los procesos de control del rendimiento para lo cual uno de los elementos
básicos a detectar es el control de concurrencia de distintos usuarios.
De igual manera el control de concurrencia es uno de los principios fundamentales a administrar ya que en las bases de datos siempre se debe
garantizar la consistencia y disponibilidad de la información.
La persistencia del almacenamiento de datos, el control de acceso no
autorizado y las actualizaciones correctas de los usuarios son otros aspectos de alta prioridad que se debe tener en un buen proceso de Gestión de
Base de Datos.
1. CONTROL DE CONCURRENCIA
La concurrencia se refiere a la ejecución de múltiples procesos al mismo
tiempo, es una propiedad que permite la interacción entre los sistemas de
Información y las bases de datos.
El control de concurrencia va orientado a la coordinación de los procesos
que actúan en forma concurrente sobre datos que se encuentran compartidos, evitando la interferencia entre ellos.
A nivel de Sistema Manejador de Base de Datos se debe implementar un
modelo que garantice la consistencia de la base de datos en los casos
donde se realicen modificaciones concurrentes.
3
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
Ejecución de la
Transacción
Manejador de
Transacciones
Inicio
TRANSACCIÓN 1
Inicio
TRANSACCIÓN i
Fin
Estados de las
Bases de Datos
Fin
Estados de
Transacción
Bloqueos
2. TRANSACCIONES Y ACCESOS
Las transacciones son aquellos procesos concurrentes sobre datos compartidos que cumplen con las siguientes propiedades:
Atomicidad (Atomicity): toma a la transacción como una unidad de operación. Todas las acciones de la transacción se deben realizar o ninguna de
ellas se lleva a cabo, es decir, se ejecuta o no se ejecuta. Si existe una
falla y la transacción se interrumpe, los resultados parciales son totalmente anulados.
Consistencia (Consistency preservation): las transacciones deben llevar
una base de datos de un estado consistente a otro estado consistente, de
tal forma no se viola ninguna restricción de integridad.
Aislamiento (Isolation): una transacción no debe interferir con otra.
Cuando la transacción se encuentra en ejecución sus resultados no son
mostrados a otras transacciones concurrentes, sino solamente cuando
ésta termine.
Durabilidad (Durability): esta propiedad también se le llama Permanencia.
El objetivo es que una vez una transacción termine exitosamente y la
transacción sea confirmada, los resultados son permanentes en la base de
datos.
4
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
El conjunto de estas propiedades son conocidas como ACID, por las iniciales de cada una de ellas.
Una transacción se considera como una unidad lógica de procesamiento
que utiliza varias operaciones de accesos a bases de datos, como por
ejemplo las consultas y modificaciones, definidas dentro de un intervalo
donde existe un punto de inicio y un punto de finalización, el primero
llamado begin transaction y el segundo llamado end transaction.
3. TRANSACCIONES Y ESTADOS DE LA BASE DE DATOS
La transacción como tal debe realizarse garantizando los estados consistentes que debe tener la base de datos, de lo contrario no se estaría utilizando un modelo formal adecuado que controle el rendimiento esperado.
La siguiente gráfica muestra cómo es planteada la ejecución de la transacción y su relación con los estados de la base de datos.
La Base de Datos temporalmente
en un estado inconsistente durante
la ejecución de la transacción.
La Base de Datos en
estado consistente
La Base de Datos en
estado consistente
5
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
4. ESTADOS DE LA TRANSACCIÓN
Existen operaciones que son básicas para definir los estados de una transacción. Las operaciones que se utilizan son las siguientes:
Read: la transacción lee un ítem especificado en la base de datos.
Write: la transacción escribe sobre un ítem especificado en la base de
datos.
Commit: la transacción confirma que sus modificaciones deben ser permanentes en la base de datos.
Abort: la transacción establece que ninguna de sus modificaciones deben
ser permanentes en la base de datos. La acción de recuperar el estado
anterior de una transacción frente a un abort se llama Rollback.
Estas operaciones determinan los estados de la transacción que son:
Activa: se encuentra en este estado si se está ejecutando.
Parcialmente confirmada: se presenta después que la última instrucción fue ejecutada.
Confirmada: se ejecutó en forma satisfactoria.
Falla: en este estado es imposible continuar con su ejecución. Se retrocede la transacción y la base de datos se restaura al estado anterior de su
ejecución.
Completada: se terminó la transacción.
La siguiente gráfica ilustra la forma cómo se relaciona los estados de la
transacción con las operaciones dadas.
6
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
Inicio
Read, Write
Activa
Fin Transacción
Abort
Abort
Parcialmente
Confirmada
Falla
Commit
Se abortan las
modificaciones
Confirmada
Se hacen las
modificaciones
Rollback
Completada
5. MANEJADOR DE TRANSACCIONES
Es una aplicación que interactúa con el Sistema Manejador de Base de
Datos para administrar las transacciones que se presenten.
Recibe instrucciones de ejecución por los programas y organiza en forma
relativa las lecturas y escrituras de las transacciones. Establece todo lo
necesario para la implementación de ACID.
El manejador de transacciones opera con aplicaciones y servidores de aplicaciones que controlan el alcance y duración de las transacciones.
De igual forma ayuda a completar transacciones globales, sincronización y
recuperación transaccional, así como también puede comunicarse con
otras instancias de administrador de transacciones.
7
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
Programas de
Aplicación
Base de Datos
T2
T1
T4
T3
T5
6. BLOQUEOS
La gran finalidad de los bloqueos es que impiden los conflictos de actualización. Se presentan cuando usuarios requieren la lectura o modificación
de datos que en ese instante están siendo modificados por otros usuarios.
Entre las características básicas de los bloqueos tenemos:
• Permiten la serialización de las transacciones, haciendo que un usurio
a la vez pueda modificar un dato.
• Son necesarios en las transacciones simultáneas ya que permiten que
usuarios accedan y actualicen datos en mismo intervalos de tiempo.
Un bloqueo asocia variables a cada elemento de datos de acuerdo con las
operaciones posibles. Entre las variables tenemos: Identificador del elemento bloqueado, identificador de la transacción que lo bloquea.
La transacción debe solicitar un bloqueo que garantice cierta exclusividad
sobre los datos requeridos.
8
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
6.1 Tipos de bloqueos
Bloqueos exclusivos, primarios o binarios
Se presentan cuando se solicita un bloqueo por un solo recurso especificado. Puede tener dos estados: bloqueado y desbloqueado (1,0). Si el valor
del bloqueo es 1, quiere decir que ninguna operación de la base de datos
que solicite el elemento puede tener acceso al mismo. Por lo contrario, si
el valor es 0, significa que se podrá tener acceso al elemento cuando sea
solicitado. Se consideran dos operaciones:
•Bloquear_elemento: Una transacción solicita acceso a un elemento X
y le asigna el valor de 1 al procedimiento para bloquear el elemento.
•Desbloquear_elemento: Cuando una transacción termina de usar un
elemento, emite una operación de desbloquear al elemento asignándole el valor de 0 al procedimiento, liberándolo para que otras tran
sacciones tengan acceso a él.
El bloqueo binario determina una exclusión mutua sobre el elemento de
información.
Bloqueos compartidos
Se presentan cuando se dan muchos bloqueos para un recurso específico,
donde se permite que varias transacciones tengan acceso al recurso si se
hace exclusivamente para lectura, pero si la transacción va a escribir en un
elemento entonces debe tener acceso exclusivo al mismo. Se manejan las
operaciones: bloquear_lectura, bloquear_escritura y desbloquear.
Las reglas en los bloqueos múltiples son:
•La transacción T debe ejecutar la operación bloquear_lectura o
bloquear_escritura antes de que realice cualquier operación
leer_elemento. Luego debe ejecutar desbloquear_elemento.
•La transacción T debe ejecutar la operación bloquear_escritura antes
de que realice cualquier operación escribir_elemento. Luego debe ejecutar desbloquear_elemento.
•No se ejecutan bloqueo sobre un elemento si ya tiene un bloqueo
sobre este mismo. Si se requiere se pueden permitir excepciones.
9
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
•Una transacción T no ejecutará una operación desbloquear_elemento
a menos que ya posea un bloquear_lectura o bloquear_escritura para
el elemento especificado.
6.2 Protocolos de bloqueos
6.2
Protocolo de bloqueos
El protocolo de Bloqueos define un conjunto de reglas de uso con el fin de
garantizar la serialización de las transacciones, estableciendo las ubicaciones de las operaciones de bloqueo y desbloqueo dentro de una transacción. El protocolo más utilizado es el de dos fases:
• Fase de crecimiento: Creación de bloqueos.
• Fase de contracción: Liberación de bloqueos.
El gran objetivo de este protocolo de bloqueo de dos fases es que todas
las operaciones de bloqueo se deben realizar antes de la primera operación de desbloqueo, es decir, primero se dan todos los bloqueos y luego se
liberan.
Las transacciones deberían cumplir las siguientes reglas para garantizar la
seriabilidad:
a)La transacción debe realizar un bloqueo sobre el elemento antes de
operar sobre el mismo.
b)Cuando se libera un bloqueo la transacción no adquiere otro bloqueo, ya
que entran a ejecutarse las operaciones o transacciones que están en
espera. Las ejecuciones intercaladas de estas transacciones son entonces serializables.
Si una transacción cumple con éstas dos reglas se considera que cumple
con el protocolo de dos fases.
10
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
Un ejemplo sería así:
Dado X,Y elementos de datos, se dan T1 y T2 dos transacciones, se presenta el siguiente bloqueo en dos fases.
T1
T2
Bloquear(Y, leer)
Leer(Y)
Bloquear(X, escribir + leer)
Leer(X)
X=X+Y
Escribir(X)
Desbloquear(Y)
Desbloquear(X)
Bloquear(X,leer)
Bloquear(Y, escribir + leer)
Leer(X)
Desbloquear(X)
Leer(Y)
Y=Y+X
Escribir(Y)
Desbloquear(Y)
Estas dos transacciones están en protocolo de 2 fases, por lo tanto la planificación que se realice puede ser serializable. Así:
PLANIFICACION
T1
T2
Bloquear(Y, leer)
Leer(Y)
Bloquear(X, escribir + leer)
Bloquea(X, leer)
(en espera que se X
se desbloque por T1)
Leer(X)
X=X+Y
ESCRIBIR (X)
Desbloquear(Y)
Desbloquear(X)
Bloquear(Y, escribir + leer)
Leer(X)
Desbloquear(X)
Leer(Y)
Y=Y+X
Escribir(Y)
Desbloquear(Y)
11
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
6.3 Problemas con bloqueos
Deadlock
Es uno de los problemas más comunes en bloqueos de acceso a datos,
también es conocido como bloqueo mutuo, abrazo mortal, interbloqueo,
traba mortal. Cuando dos o más transacciones esperan unas por otras se
presenta este problema. Las condiciones que se presentan para producir
un deadlock son las siguientes:
•Mutua exclusión: cuando las transacciones solicitan un control exclusivo sobre el recurso.
•Retención y espera: la transacción tiene recursos asignados y se
encuentra esperando por otros recursos de otras transacciones.
•No remoción: las transacciones tienen control sobre los recursos y
únicamente pueden ser liberados por éstas
•Espera circular: transacciones que tienen recursos asignados y esperan por recursos de otras transacciones.
En las gráficas se muestra el ejemplo clásico de deadlock donde una transacción T1 está tratando de bloquear un elemento de dato de otra transacción T2, y de igual manera T2 está tratando de bloquear un elemento
de T1.
tado
Solici
Proceso
P1
Refer
id
o por
T1
Recurso
A
Recurso
B
Refer
id
o por
Proceso
P2
tado
Solici
T2
12
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
Transacción 1
Inicio Transacción
Tabla A
Operación SQL
Operación SQL
Operación SQL
Operación SQL
Operación SQL
Operación SQL
Transacción 2
Tabla B
Inicio Transacción
Operación SQL
Operación SQL
Operación SQL
Commit
Fin Transacción
La Transacción 1 esta esperando
que la Transacción 2
libere el bloqueo sobre la Tabla B
La Transacción 2 esta esperando
que la Transacción 1
libere el bloqueo sobre la Tabla A
Operación SQL
Operación SQL
Operación SQL
Commit
Fin Transacción
En las gráficas anteriores se muestra el ejemplo clásico de deadlock
donde a una transacción T1 está tratando de bloquear un elemento de
dato de otra transacción T2, y de igual manera T2 está tratando de bloquear un elemento de T1.
Métodos para solucionar o prevenir los Deadlocks:
•Prevención: Establecer reglas de prioridad o protocolos con restricciones para prevenir la aparición de los deadlocks.
•Evasión: De acuerdo con los requerimientos establecidos se puede
determinar un posible deadlock por lo que se evita que las transacciones pidan recursos que les cause estados de espera, diseñando
protocolos para la evasión del Deadlock.
•Recuperación: Para recuperar un proceso de un deadlock se puede
cancelar la ejecución y reiniciar. También se pueden desasignar
recursos y correr en forma individual las transacciones requeridas.
13
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
6.4 Marcas de tiempo
Es una técnica de manejo de bloqueo que consiste en determinar en
forma anticipada una ordenación en las transacciones. La marca de
tiempo es un identificador asociado a cada transacción.
Utiliza protocolos para la solución de conflictos en los bloqueos de las
transacciones. Los protocolos son Wait-die y Wound-wait.
El protocolo Wait-die establece obligar una transacción a esperar si está
en conflicto con otra transacción que tenga una marca de tiempo más
reciente.
El protocolo Wound-wait se orienta a que una transacción termine o mate
a otra que tenga una marca de tiempo más reciente o que espere la transacción de la solicitud.
Algoritmo Wait-Die
Algoritmo Wound-Wait
Pide
Recursos
Mantiene
Recursos
Pide
Recursos
Mantiene
Recursos
A (t=7)
B (t=11)
A (t=7)
B (t=11)
espera
reemplaza
Pide
Recursos
Mantiene
Recursos
Pide
Recursos
Mantiene
Recursos
B (t=11)
A (t=7)
B (t=11)
A (t=7)
termina
espera
14
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
RECURSOS BIBLIOGRÁFICOS
Date, C. (2001). Introducción a los Sistemas de Base de Datos. Prentice
Hall.
Peter Eisentraut, Bernd Helmle (Octubre 2008).
PostgreSQL-Administration
Vargas Valencia Magaly, Cano Yur (200) . Concurrencia en las bases de
datos. Consultado el 6 de Marzo de 2012 en
http://www.monografias.com/trabajos24/concurrencia-base-datos/conc
urrencia-base-datos.shtml
De Ves, Esther, Cerverón Vicente (2007). Técnicas de control de
concurrencia. Consultado el 7 de marzo de 2012 en
http://informatica.uv.es/iiguia/2000/BD2/4_0_BD2Tema4_06.pdf
Romani Loyola, Julio Cesar, Ortiz Velasquez Vladimir.Transacciones y
control de concurrencia. Consultado el 14 de Marzo de 2012 en
http://es.scribd.com/doc/414370/CONTROL-DE-CONCURRENCIA
Universidad Carlos III de Madrid. Opencourseware, Diseño y
administración de base de datos. Consultado el 15 de Marzo de 2012 en
http://ocw.uc3m.es/ingenieria-informatica/diseno-y-administracion-de-b
ases-de-datos/teoria/Tema4_6(Administracion_Concurrencia).pdf
Oracle Corp.(2005). Oracle database concepts. Consultado el 15 de
Marzo de 2012 en
http://docs.oracle.com/cd/B19306_01/server.102/b14220/transact.htm
15
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
GLOSARIO
Integridad:
En contexto de Base de datos se refiere a la Integridad de los datos. Está relacionada con la completitud y corrección de los datos almacenados en una
base de datos. Pueden modificarse datos existentes
tomando valores incorrectos o cambios en la base
de datos que se pierden cuando hay un error del
sistema o un fallo de energía.
Protocolo:
Conjunto de reglas establecidas para proceso en
sistemas informático en diferentes aspectos tales
como comunicación, manejo de datos, procesamientos, entre otros.
Serialización:
Es un mecanismo para transporte de objetos de
datos en diferentes contextos de los sistemas informáticos. Su características es el procesamiento de
dichos datos uno a la vez.
Servidores de
Aplicaciones:
Son equipos de hardware o servidores de datos que
ejecutan ciertas aplicaciones y le proporcionan servicios a computadoras clientes.
Sistema
Manejador de
Base de Datos:
También conocido como Sistema Gestor de Base de
Datos, son aplicativos que tienen como objetivo
facilitar la construcción y manipulación de bases de
datos sirviendo como interfaz entre éstas, los usuarios y los distintos tipos de aplicaciones que las utilizan. Sus siglas pueden ser SMBD o SGBD.
16
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Concurrencia, Transacciones, Accesos y Bloqueos
OBJETO DE
APRENDIZAJE
Concurrencia, Transacciones,
Accesos y Bloqueos
Desarrollador de contenido
Experto temático
Manuel G. Hormechea Lance
Asesor Pedagógico
Rafael Neftalí Lizcano Reyes
Productor Multimedia
José Jaime Luis Tang Pinzón
Victor Hugo Tabares Carreño
Programadores
Daniel Eduardo Martínez Díaz
Francisco José Lizcano
Líder expertos temáticos
Ana Yaqueline Chavarro Parra
Líder línea de producción
Santiago Lozada Garcés
Atribución, no comercial, compartir igual
Este material puede ser distribuido, copiado
y exhibido por terceros si se muestra en los
créditos. No se puede obtener ningún beneficio comercial y las obras derivadas tienen
que estar bajo los mismos términos de
licencia que el trabajo original.
17
FAVA - Formación en Ambientes Virtuales de Aprendizaje
SENA - Servicio Nacional de Aprendizaje
Descargar