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