Академический Документы
Профессиональный Документы
Культура Документы
Clase 18
Entornos concurrentes
Existen varias razones para permitir la concurrencia (aunque es ms sencillo que las transacciones se ejecuten secuencialmente):
Una transaccin consiste de varios pasos. Algunos pasos implican operaciones de E\S, otros implican operaciones de CPU.
IBD - CLASE 18
Entornos concurrentes
Las operaciones de E\S se pueden realizar en paralelo con el procesamiento de CPU. Se puede explotar este paralelismo y ejecutar varias transacciones en paralelo. Se aumenta la productividad del sistema, hay menos dispositivos desocupados.
Entornos concurrentes
Varias transacciones ejecutndose simultneamente compartiendo recursos. Deben evitarse problemas de consistencia de datos
IBD - CLASE 18
Entornos concurrentes
T0 READ( a ) a := a 50 WRITE( a ) READ( b ) b := b + 50 WRITE( b ) T1 READ( a ) temp := a * 0.1 a := a temp WRITE( a ) READ( b ) b := b + temp WRITE( b )
IBD - CLASE 18
Entornos concurrentes
READ(A) A := A 50 WRITE(A)
READ(A) TEMP := A * 0.1 A := A TEMP WRITE(A) READ(B) B := B + 50 WRITE(B) READ(B) B := B + TEMP WRITE(B) READ(A) A := A 50 READ(A) TEMP := A * 0.1 A := A TEMP WRITE(A)
A + B se conserva
A + B no se conserva
IBD - CLASE 18 UNLP - Facultad de Informtica
Entornos concurrentes
Problemas de Concurrencia
Una transaccin correcta por si misma, puede producir resultado incorrecto por interferencia con otra transaccin Tres posibles problemas: El problema de la actualizacin perdida El problema de la dependencia no confirmada El problema del anlisis inconsistente
IBD - CLASE 18 UNLP - Facultad de Informtica
Entornos concurrentes
La Transaccin A recupera la tupla t en el tiempo t1 La Transaccin B recupera la misma tupla t en el tiempo t2 La Transaccin A actualiza la tupla t en el tiempo t3 La Transaccin B actualiza la misma tupla t en el tiempo t4 La actualizacin de la Transaccin A se pierde en t4
IBD - CLASE 18
Entornos concurrentes
Una Transaccin recupera o actualiza una tupla actualizada por otra Transaccin (an no finalizada) La Transaccin B actualiza la tupla t en el tiempo t1 La Transaccin A recupera la tupla t en el tiempo t2 La Transaccin B deshace la actualizacin de la tupla t en el tiempo t3 (undo) La Transaccin A est operando bajo suposicin falsa
IBD - CLASE 18
Entornos concurrentes
La Transaccin A acumula saldos de 3 cuentas (c1,c2,c3) La Transaccin B transfiere $10 de c3 a c1 y se confirma, antes de que A acumule el saldo de la cuenta c3 Si A finaliza con xito, produce inconsistencia en la BD
IBD - CLASE 18 UNLP - Facultad de Informtica
10
Entornos concurrentes
Conclusiones
El programa debe conservar la consistencia Slo las instrucciones READ y WRITE son importantes y deben considerarse.
11
IBD - CLASE 18
Entornos concurrentes
La secuencia de ejecucin de transacciones se denominan planificacin. Representa el orden cronolgico en el cual se ejecutan las instrucciones del sistema.
Planificacin secuencial: consiste de una secuencia de instrucciones de varias transacciones, en la cual las instrucciones pertenecientes a una nica transaccin estn juntas.
12
IBD - CLASE 18 UNLP - Facultad de Informtica
Entornos concurrentes
Cuando se ejecutan concurrentemente varias transacciones, la planificacin no tiene por qu ser secuencial. Son posibles muchas ms secuencias de ejecucin, puesto que varias instrucciones de distintas transacciones se pueden intercalar.
13
IBD - CLASE 18
Control de Concurrencia
Seriabilidad
La ejecucin concurrente de varias transacciones debe generar el mismo resultado que la ejecucin en serie de las mismas. La ejecucin de un conj. de transacciones es correcta cuando es seriable (produce el mismo resultado que una ejecucin serial de las mismas transacciones, ejecutando una a la vez)
14
IBD - CLASE 18
Control de Concurrencia
Seriabilidad
1. Las transacciones individuales son tomadas como correctas (se da por hecho que transforman un estado correcto de BD en otro estado correcto) 2. Es correcta la ejecucin de una transaccin a la vez en cualquier orden serial 3. Una ejecucin intercalada es correcta cuando equivale a alguna ejecucin serial (es seriable)
15
IBD - CLASE 18 UNLP - Facultad de Informtica
Control de Concurrencia
Seriabilidad
Dado un conj. de transacciones, a cualquier ejecucin de ellas (intercaladas o no) se le llama Plan La ejecucin de una transaccin a la vez, sin intercalado, constituye un Plan Serial Un Plan no serial es intercalado Dos planes son equivalentes cuando garantizan que producirn el mismo resultado independientemente del estado inicial de la BD Un Plan es correcto, cuando equivale a un Plan Serial
16
IBD - CLASE 18 UNLP - Facultad de Informtica
Control de Concurrencia
Si una transaccin Ti falla, es necesario deshacer el efecto de dicha transaccin para asegurar atomicidad Es necesario asegurar tambin que toda transaccin Tj que dependa de Ti (Tj lee datos que ha escrito Ti) se aborte tambin. Planificacin recuperable: aquella en la que para todo par de transacciones Ti y Tj, tales que Tj lee elem. de datos que ha escrito antes Ti, la operacin comprometer de Ti aparece antes que la de Tj.
17
IBD - CLASE 18 UNLP - Facultad de Informtica
Entornos concurrentes
I1, I2 instrucciones de T1 y T2
Si operan sobre datos distintos. NO hay conflicto. Si operan sobre el mismo dato I1 = READ(Q) = I2, no importa el orden de ejecucin I1 = READ(Q), I2 = WRITE(Q) depende del orden de ejecucin (I1 leer valores distintos) I1 = WRITE(Q), I2 = READ(Q) depende del orden de ejecucin (I2 leer valores distintos) I1 = WRITE(Q) = I2, depende el estado final de la BD
I1, I2 estn en conflicto si actan sobre el mismo dato y al menos una es un write.
18
IBD - CLASE 18 UNLP - Facultad de Informtica
Entornos concurrentes
Una Planificacin S se transforma en una S mediante intercambios de instrucciones no conflictivas, entonces S y S son equivalentes en cuanto a conflictos. S es serializable en conflictos si existe S/ son equivalentes en cuanto a conflictos y S es planificable serie.
Algoritmo para determinar seriabilidad de conflictos: grafo dirigido (grafo de precedencia)
19
IBD - CLASE 18 UNLP - Facultad de Informtica
Pruebas de seriabilidad
Entornos concurrentes
Conjunto de vrtices (transacciones de la planificacin) Cto de aristas ( Ti Tj /
Ti ejecuta un write(q) antes que Tj un read(q) Ti ejecuta un write(q) antes que Tj un write(q) Ti ejecuta un read(q) antes que Tj un write(q)
20
IBD - CLASE 18
Entornos concurrentes
21
IBD - CLASE 18
Control de Concurrencia
Bloqueo
Cuando una Transaccin deba asegurarse que algn objeto sobre el que tenga inters (una tupla) no cambiar mientras lo use, adquiere un Bloqueo sobre ese objeto
Dos tipos de Bloqueos:
Exclusivos (de escritura) Compartidos (de lectura)
22
IBD - CLASE 18
Control de Concurrencia
Bloqueo
Si la Transaccin A pone un bloqueo exclusivo Lock_e(dato) sobre la tupla t -> se rechaza el pedido de cualquier otra transaccin para un bloqueo de cualquier tipo sobre t Si la Transaccin A pone un bloqueo compartido Lock_c(dato) sobre la tupla t:
se rechaza el pedido de cualquier otra transaccin para un bloqueo exclusivo sobre t se acepta el pedido de cualquier otra transaccin para un bloqueo compartido sobre t
23
IBD - CLASE 18
Control de Concurrencia
Protocolo de Bloqueo
Una Transaccin que desea recuperar una tupla t, primero debe adquirir un bloqueo compartido sobre t
Una Transaccin que desea actualizar una tupla t, primero debe adquirir un bloqueo exclusivo sobre t Si el bloqueo pedido por una Transaccin B se rechaza porque conflicta con un bloqueo de la Transaccin A , entonces B pasa a espera hasta que se libere el bloqueo de A Las transacciones piden lo que necesitan. Los bloqueos pueden ser compatibles y existir simultneamente (compartidos)
24
IBD - CLASE 18 UNLP - Facultad de Informtica
Control de Concurrencia
Situacin en la que dos o ms transacciones se encuentran en estado simultneo de espera Si ocurre Deadlock el sistema lo debe detectar y romper La deteccin implica descubrir un ciclo en el grafo de espera (el grafo de quin est esperando a quin) La ruptura implica seleccionar una transaccin bloqueada mortalmente como vctima y deshacerla (liberando as su bloqueo)
25
IBD - CLASE 18 UNLP - Facultad de Informtica
Control de Concurrencia
Deadlock
lock_e(b) Read(b) b := b + 50 write(b) lock_e(a)
26
Control de Concurrencia
Protocolo de Bloqueo
27
IBD - CLASE 18 UNLP - Facultad de Informtica
Control de Concurrencia
Conclusiones
Si lo datos se liberan pronto se evita posible Deadlock Si los datos se mantienen bloqueados se evita inconsistencia.
28
IBD - CLASE 18
Control de Concurrencia
Es posible que haya una secuencia de transacciones que soliciten un bloqueo en modo compartido sobre elemento de datos y que cada una de ellas libere el bloqueo poco despus de que sea concedido, de forma de que otra transaccin T1 nunca obtenga el bloqueo en modo exclusivo. La transaccin T1 nunca progresa (Inanicin) Para evitar inanicin, cuando la transaccin Ti pide un bloqueo sobre un elem. de datos Q en un modo particular M, se concede el bloqueo siempre que: No exista otra transaccin que posea un bloqueo sobre Q en un modo que conflicte con M No exista otra transaccin que est esperando un bloqueo sobre Q y que lo haya solicitado antes que Ti
29
IBD - CLASE 18 UNLP - Facultad de Informtica
Control de Concurrencia
Protocolos de bloqueo
Dos fases
Requiere que las transacciones hagan bloqueos en dos fases:
Crecimiento: se obtienen datos (una transaccin puede obtener bloqueos pero no puede liberar ningn bloqueo) Decrecimiento: se liberan los datos (una transaccin puede liberar bloqueos pero no puede obtener ningn bloqueo nuevo.)
Garantiza seriabilidad (secuencialidad) en conflictos, pero no evita situaciones de bloqueos. Mucho bloqueo exclusivo provoca serie
30
IBD - CLASE 18 UNLP - Facultad de Informtica
Control de Concurrencia
El orden de ejecucin se determina por adelantado, no depende de quien llega primero A cada transaccin Ti del sistema se le asocia una hora de entrada fija nica. El sistema de Base de Datos asigna una hora de entrada antes de que la transaccin Ti empiece su ejecucin. C/transaccin recibe una HDE
Hora del servidor Un contador (contador lgico que se incrementa despus de asignar una nueva hora de entrada)
31
Control de Concurrencia
Las operaciones READ y WRITE que pueden entrar en conflicto se ejecutan y eventualmente fallan por HDE.
Algoritmo de ejecucin:
Ti Solicita READ(Q)
HDE(Ti) < HW(Q): rechazo (Ti necesita leer un valor de Q que ya fue sobreescrito. Ti retrocede y la operacin READ se rechaza porque el valor que deba leer Ti, ya lo sobreescribi otra transaccin ) HDE(Ti) HW(Q): ejecuta y se establece HR(Q)=Max{HDE(Ti), HR(Ti)}
32
IBD - CLASE 18
Control de Concurrencia
Ti solicita WRITE(Q)
HDE(Ti) < HR(Q): rechazo (Q fue utilizado por otra transaccion anteriomente y supuso que no cambiaba) HDE(Ti) < HW(Q): rechazo (se intenta escribir un valor viejo, obsoleto) HDE(Ti) > [HW(Q) y HR(Q)]: ejecuta y HW(Q) se establece con HDE(Ti).
Si Ti falla, y se rechaza entonces puede recomenzar con una nueva hora de entrada.
33
IBD - CLASE 18 UNLP - Facultad de Informtica
Existe un nico buffer de datos compartidos y uno para la bitcora C/transaccin tiene un rea donde lleva sus datos El retroceso de una transaccin puede llevar al retroceso de otras transacciones
Retroceso en cascada
Falla una transaccin pueden llevar a abortar otras Puede llevar a deshacer gran cantidad de trabajo.
34
IBD - CLASE 18
Puede ocurrir que falle Ti, y que Tj deba retrocederse, pero que Tj ya termin. Como actuar?
Protocolo de bloqueo de dos fases: los bloqueos exclusivos deben conservarse hasta que Ti termine. HDE, agrega un bit, para escribir el dato, adems de lo analizado, revisar el bit si est en 0 proceder, si est en 1 la transaccin anterior no termino, esperar....
35
IBD - CLASE 18
Bitcora
Ante un fallo
UNDO y REDO segn el caso. Debemos buscar antes del Checkpoint solo aquellas transacciones que estn en la lista.
36
IBD - CLASE 18
Interbloqueos
Prevencin
Ordenar los datos parcialmente, se obtienen en orden o nada HDE puede manejar prioridades para evitar inanicin.
37
IBD - CLASE 18 UNLP - Facultad de Informtica
Interbloqueos
Deteccin: Algoritmo
Detecta el bloqueo
Genera un grafo de pedidos de datos, si encuentra ciclo deadlock
38
IBD - CLASE 18