Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
Catedra de Base de Datos
Facultad de Ciencias Exactas y Tecnología
Universidad Nacional de Tucumán
Ciclo Lectivo 2016
Transacciones y Control de la Concurrencia
Los SGBDs son sistemas concurrentes, admiten la ejecución concurrente de consultas. Ejemplo: Sistema de venta de billetes de avión.
Conceptos - Transacción: es una unidad de la ejecución de un programa. Puede consistir en varias
operaciones de acceso a la DB. Se encuentra delimitada por los constructores BEGIN y END. - Todas las operaciones deben de ser “acidas“ (ACID), es decir cumplan con:
- Atomicity (Atomicidad): que las transacciones sean atómicas, se vean como una sola unidad.
- Consistency (Consistencia): que los datos realmente estén bien relacionados y que no existan problemas de falta de información o falta de confiabilidad en los datos
- Isolation (Aislamiento): aislamiento, separar las operaciones de distintas conexiones/usuarios unos de otros.
- Durability (Durabilidad): que se garantice la persistencia de los datos.
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Estados de una Transacción - Activa: Durante su ejecución. - Parcialmente comprometida: Después de ejecutar su última instrucción. - Fallida: Imposible de continuar su ejecución normal. - Abortada: Transacción retrocedida y base de datos restaurada al estado anterior a su
ejecución. Se puede reiniciar o cancelar. - Retroceso de transacciones: Automáticos y programados.
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Abortar
Abortar
Transacciones y Control de la Concurrencia
Crear Conexion Abrir Conexión (Openconnection) Iniciar Transacción (Begin Transaction) setAutoCommit(0/false) Queries... (Insert, Select, Update, Delete...) -Error (Abort Transaction) rollback Procesar resultados (Print, a= , b= ) Asegurar Transacción (End Transaction) commit Cerrar Conexión (Closeconnection)
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
• Por default toda
transacción tiene el
autocommit =1
• El rollback generalmente se
usa en el catch de los
programas, aunque puede ir
en cualquier parte.
• Una transacción que no
llega al commit
automáticamente hace el
rollback
Transacciones y Control de la Concurrencia Ejemplo: Incremento de un 1% de las comisiones 15% y 16% de la tabla de comisiones roysched. Si no existen estos porcentajes entonces no se ejecutará la instrucción de actualización. En este ejemplo se deben incrementar ambos; si uno de ellos no existe, se debe dejar sin modificar. BEGIN TRAN actualiza_comisiones -- Inicio de la transacción USE pubs IF EXISTS (SELECT titles.title, roysched.royalty FROM titles, roysched WHERE titles.title_id=roysched.title_id AND roysched.royalty=16) UPDATE roysched SET royalty=17 WHERE royalty=16 ELSE ROLLBACK TRAN actualiza_comisiones IF EXISTS (SELECT titles.title, roysched.royalty FROM titles, roysched WHERE titles.title_id=roysched.title_id AND roysched.royalty=15) BEGIN UPDATE roysched SET royalty=16 WHERE royalty=15 COMMIT TRAN actualiza_comisiones END ELSE ROLLBACK TRAN actualiza_comisiones
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Transacciones anidadas Una transacción anidada o multinivel T consiste en un conjunto T = {t1, t2, . . ., tn} de subtransacciones y en un orden parcial P sobre T. Cada ti de T puede abortar sin obligar a que T aborte. Puede que T reinicie ti o simplemente no ejecute ti. Si se compromete ti, esa acción no hace que ti sea permanente, sino que ti se compromete con T, y puede que aborte si T aborta. La ejecución de T no debe violar el orden parcial P. Es decir, si aparece un arco ti → tj en el grafo de precedencia, tj → ti no debe estar en el cierre transitivo de P. USE MyDB GO CREATE PROCEDURE Formular_pedido AS --Crea un procedimiento almacenado BEGIN TRAN Tran_formular_pedido -- Instrucciones SQL para la formulación del pedido COMMIT TRAN Tran_formular_pedido GO BEGIN TRAN Tran_pedidos -- Formular un pedido EXEC Formular_pedido COMMIT TRAN Tran_pedidos GO
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Bloqueos Un bloqueo es una información del tipo de acceso que se permite a un elemento. El SGBD impone los bloqueos necesarios en cada momento. El gestor de acceso a los datos implementa las restricciones de acceso. En algunos sistemas se permite que el usuario pueda indicar el bloqueo más adecuado (locking hints). Tipos de bloqueo read-locks: sólo permite lectura write-locks: permite lectura y escritura El gestor de bloqueos almacena los bloqueos en una tabla de bloqueos: (<elemento>, <tipo de bloqueo>, <transacción>)=(E,B,T) La transacción T tiene un tipo de bloqueo B sobre el elemento E.
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Modos de bloqueo Especifica el modo en que se bloquea un elemento • Compartido: para operaciones sólo de lectura. Se permiten lecturas concurrentes, pero
ninguna actualización. • Actualización: para operaciones que pueden escribir. Sólo se permite que una transacción
adquiera este bloqueo. Si la transacción modifica datos, se convierte en exclusivo, en caso contrario en compartido.
• Exclusivo. para operaciones que escriben datos. Sólo se permite que una transacción adquiera este bloqueo.
• Intención: se usan para establecer una jerarquía de bloqueo. Por ejemplo, si una transacción necesita bloqueo exclusivo y varias transacciones tienen bloqueo de intención, no se concede el exclusivo. Estos puede ser Intención compartido o Intención exclusivo.
• Esquema. para operaciones del DDL. • Actualización masiva. En operaciones de actualización masiva
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Control de concurrencia - El control de accesos concurrentes y específicamente de transacciones concurrentes es
manejado por un módulo del dbms llamado "scheduler".
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Ejemplo: 2 transacciones cuya única característica de consistencia es que A=B ya que ambas operaciones son iguales para ambos elementos. Por otro lado sabemos que si las transacciones son ejecutadas aisladamente la consistencia se preservará.
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Serial: Un schedule se considera "serial" si sus acciones consisten de todas las acciones de una transacción, seguidas de todas las de otra transacción y así sucesivamente sin mezclas de ningún tipo.
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Serializable: Otra manera de mantener la consistencia, es que un schedule puede ser serializable siempre y cuando se mantenga el mismo estado que si se tratase de un serial.
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Conflicto-Seriabilidad: Al tratar de asegurar que un schedule es serializable, se debe entender aquellos casos que representan conflictos, es decir, los pares de acciones cuyo orden no pueden ser intercambiado. Los casos que NO representan conflictos: Cuando Ti y Tj son transacciones diferentes: 1. ri(X); rj(Y) : nunca es conflicto 2. ri(X); wj(Y) : no es un conflicto, X != Y 3. wi(X); rj(Y) : no es un conflicto, por lo mismo que la anterior 4. wi(X); wj(Y) : no es un conflicto, por lo mismo que la anterior Por otro lado existen 3 situaciones en donde NO se pueden intercambiar el orden de las acciones. 1. 2 acciones de la misma transacción, ej ri(X); wi(Y) 2. 2 escrituras del mismo elemento por diferentes transacciones, wi(X); wj(X). 3. Una lectura y escritura del mismo elemento por diferentes transacciones, ri(X); wj(X) y
wi(X); rj(X).
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Conflicto-Seriabilidad: Se dice que dos operación es Ii e Ij de un plan S están en conflicto si operan sobre el mismo dato, pertenecen a transacciones distintas y al menos una de ellas es Escribir. Si dos operaciones NO están en conflicto entonces es posible intercambiar el orden en que se ejecutan sin generar ningún tipo de anomalía. Es posible llevar una planificación paralela a un plan en serie equivalente. Para esto, es necesario analizar las transacciones y las posibles operaciones en conflicto que pueden aparecer.
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
Conflicto-Seriabilidad: Se dice que dos operación es Ii e Ij de un plan S están en conflicto si operan sobre el mismo dato, pertenecen a transacciones distintas y al menos una de ellas es Escribir. Si dos operaciones NO están en conflicto entonces es posible intercambiar el orden en que se ejecutan sin generar ningún tipo de anomalía. Es posible llevar una planificación paralela a un plan en serie equivalente. Para esto, es necesario analizar las transacciones y las posibles operaciones en conflicto que pueden aparecer. si se verifica la seriabilidad de los planes, entonces no se producirá ninguna de las anomalías mostradas anteriormente. Sin embargo, en la práctica, comprobar la seriabilidad de los planes no es posible por razones de rendimiento y porque usualmente no se conocen de antemano todas las operaciones (y la secuencia de estas) que realizará una transacción (o si esta abortará o terminará satisfactoriamente)
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
los SGBD en lugar de verificar la seriabilidad implementan “protocolos” que “garantizan” que los planes resultantes son “serializables”: • Protocolos Basados en Bloqueos: Exigen que el acceso a los datos se haga de forma
mutuamente excluyente. • Protocolos Basados en Marcas de Tiempo: Utilizan marcas de tiempo para determinar el
orden de serializabilidad
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
T0->R1 T0<-R1 T1<-R1
Lectura T1->R1 T2->R1
Lectura Escritura
Transacciones y Control de la Concurrencia
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Transacciones y Control de la Concurrencia
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
FASE DE CRECIMIENTO
FASE DE ENCOGIMIENTO
Fundamentos de bases de datos / Abraham Silberschatz, Henry F. Korth /y/ S. Sudarshan.—(Tra. Fernándo Sáenz Pérez, Antonio García Cordero /y/ Jesús Correas Fernández.-- Rev. Tca. Luis Grau Fernández). McGraw Hill. Madrid /c.2008/5a. Edic.
Introducción al SQL para Usuarios y Programadores / Cornelio et al / THOMSON / 2003 / 2da. Edic
Fundamentos de sistemas de bases de datos / Ramez Elmasri /y/ Shamkant B. Navathe.—(Tra. Verónica Canivell Castillo, Beatriz Galán Espiga /y/ Gloria Zaballa Pérez.--Rev. Tca. Alfredo Goñi Sarriguren , Arturo Jaime Elizondo /y/ Tomás A. Pérez Fernández) Pearson Educación. Madrid /c.2002/3a. ed.
Bibliográficas Principal
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Bibliografía
• Paper “A relational model for a large shared data banks”, E. F. Codd. ” – ACM – 1970.
• “Procesamiento de bases de datos. fundamentos, diseño e implementación” - David M. Kroenke — (Tra.
Ana Elizabeth García Hernández.--Rev. Tca. Juan Raúl Esparza Martínez). Pearson Educación – México -
c.2003 – 8ª Edic.
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez
Sitio Web de la Cátedra http://catedras.facet.unt.edu.ar/bd
BASES DE DATOS
Bases de Datos Ing. Franco D. Menendez