Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Esquema de la Clase
Caracterizacin de una Transaccin Formalizacin del concepto de transaccin Discusin Tarea Control de Concurrencia Teora de la Seriabilidad Seriabilidad en BD Centralizadas Seriabilidad en BDD Distribuidas
Mecanismos - Algoritmos de Control de Concurrencia Manejo de Abrazo Mortal Control de Concurrencia en Transacciones Anidadas
2. Para dos operaciones cualesquiera Oij, Oik Osi si Oij = {R(x) W(x)} y Oik = W(x) Para cualquier x, Entonces Oij < Oik Oik < Oij
3. Oij Osi Oij <i Ni
T = { , <}
Control de Concurrencia
El Mecanismo de Control de Concurrencia de un DDBMS asegura que se mantiene la consistencia de la base de datos en un ambiente distribuido multiusuario. Sino se hace un adecuado control de concurrencia, se pueden presentar dos anomalas: Se pueden perder actualizaciones provocando que los efectos de algunas transacciones no se reflejen en la base de datos Pueden presentarse recuperaciones de informacin inconsistentes.
Teora de la Seriabilidad
Establece que un algoritmo de control de concurrencia es correcto cuando sus resultados son los mismos que si se hubiese procesado secuencialmente.
BEGIN_TRANSACTION X = 0; X = X + 1; END_TRANSACTION BEGIN_TRANSACTION X = 0; X = X + 2; END_TRANSACTION BEGIN_TRANSACTION X = 0; X = X + 3; END_TRANSACTION Si Si No
Schedule 1 x = 0; x = x+1; x = 0; x = x+2; x = 0; x = x+3; Schedule 2 x = 0; x = 0; x = x + 1; x = x + 2; x = 0; x = x+3; Schedule 3 x = 0; x = 0; x = x+1; x = 0; x = x+2; x = x+3;
Seriabilidad en BD Centralizadas
Sean las transacciones Ti = Ri(x) Wi(y) Tj = Rj(x) Wj(x) Tk = Rk(y) Por definicin la ejecucin serial de Ti Tj Tk es correcta Si tenemos una historia de ejecucin S1 = Ri(x) Rj(x) Wi(y) Rk(y) Wj(x) Queremos saber si es correcta
Seriabilidad en BD Centralizadas
Dos transacciones Ti y Tj se ejecutan serialmente en una historia S si la ltima operacin de Ti precede la primera operacin de Tj en S o viceversa, en otro caso ellas se ejecutan concurrentemente. Seriabilidad: Una historia es correcta si sta es serializable, esto es, ella es equivalente a una historia serial. Operaciones en Conflicto: Dos operaciones Oi y Oj estn en conflicto si 1. Son emitidas por transacciones diferentes 2. Operan sobre el mismo dato y una de ellas es una escritura. Ejemplo: (Ri(x) Wj(x)) y (Wi(x) Wj(x)) son operaciones en conflicto.
Seriabilidad en BD Centralizadas
Condicin suficiente para equivalencia Dos historias S1 y S2 son equivalentes si para cada par de operaciones en conflicto Oi y Oj se tiene que: Si Oi precede a Oj en S1 => Oi precede a Oj en S2 Ejemplo: S1 = Ri(x) Rj(x) Wj(y) Wi(x) S2 = Rj(x) Wj(y) Ri(x) Wi(x) -> Es una historia serial: Tj Ti
Las operaciones en conflicto son Rj(x) con Wi(x) Rj(x) precede a Wi(x) en S1 y en S2
S1 S2, Por tanto S1 es una historia correcta
Seriabilidad en BDD
Se dispone de:
- n transacciones distribuidas T1, T2,..., Tn sobre m nodos - Un conjunto local de historias S1, S2,..., Sm
La seriabilidad de historias locales no es suficiente para asegurar la correctitud de ejecucin de un conjunto de transacciones distribuidas.
Seriabilidad en BDD
Ejemplo: S1 (nodo 1) = Ri(x) Wi(x) Rj(y) Wk(x) S2 (nodo 2) = Wj(z) Wi(z) S3 (nodo 3) = Wj(z) Rk(z) Las tres historias son serializables: S1 = Ti Tj Tk S2 = Tj Ti
S3 = Tj Tk
Sin embargo no existe una secuencia global de ejecucin de las transacciones ya que Ti < Tj en S1 y Tj < Ti en S2.
S3 = Tj Tk
Sean
T = {T1, T2, ..., Tn} un conjunto de transacciones E = {S1, S2,..., Sm} una ejecucin de T
E es serializable si existe un ordenamiento total de las transacciones tal que para cada par de operaciones en conflicto Oi y Oj de las transacciones Ti y Tj respectivamente Oi < Oj en cualquier historia de E si y solo si Ti < Tj en el ordenamiento total. Un mecanismo de control de concurrencia es correcto si ste slo permite ejecuciones correctas de transacciones distribuidas
Mecanismo de Bloqueos
El mtodo de bloqueo es un mecanismo de serializacin que asegura que solo una transaccin accede a un objeto en cualquier momento. Cada recurso (objeto, dato) posee una llave.
Centralizado: un nodo es designado como nodo primario donde se almacenan todas las tablas de bloqueo y es el responsable de garantizar los bloqueos de las transacciones. Copia Primaria: Una de las copias de cada unidad de bloqueo es designada como la copia primaria y esta es la copia que debe ser bloqueada para acceder al dato. Si el dato est duplicado uno de los nodos donde est duplicado es el que lo controla.
Distribuido: El manejo del bloqueo es compartido por todos los nodos de la red.
Mecanismo de Bloqueos
Los bloqueos-lectura y los bloqueos-escritura generaran cronogramas consistentes si y solo si las transacciones se procesan en dos fases (Papadimitriu-1998) El protocolo de bloqueo posee 2 fases: Fase de adquisicin de recursos Fase de liberacin de recursos Existen dos mecanimos: - Two-Phase Locking - Strict Two-Phase Locking
Two-Phase Locking
Punto de bloqueo Nmero de bloqueos Adquisicin de Recursos Liberacin de Recursos
Tiempo
En la fase de liberacin se liberan los candados obtenidos uno por uno. Se pueden dar Abortos en Cascada porque si una transaccin aborta despus de liberar un recurso, otras transacciones que hayan accedido al mismo dato tambin van a abortar.
Tiempo
Se liberan todos los recursos cuando la transaccin termina (bien sea validando abortando)
Ordenamiento de Timestamps
A diferencia del mecanismo de bloqueo, no mantienen la seriabilidad por exclusin mutua. Seleccionan un orden de serializacin a priori y ejecutan las transacciones de acuerdo a ese orden. Cuando una transaccinTi se inicia, el TM le asigna un timeStamp nico ts(Ti). El timestamp debe ser nico y montono creciente. Cada manejador de transacciones asigna un timestamp basado en su contador local y el identificador del manejador de transacciones.
Ordenamiento de Timestamps
1. Bsico:
El TM asigna tambin un ts a las operaciones solicitadas por una transaccin. A cada elemento de datos x se le asigna un ts de lectura rts(x) y de escritura wts(x). Sus valores indican el ts ms grande para cualquier lectura y escritura de x respectivamente.
El ordenamiento de los ts se realiza segn la siguiente regla: Dada dos operaciones en conflicto Oij y Okl, perteneciendo a las transacciones Ti y Tk, respectivamente, Oij es ejecutada antes de Okl, si y solo si, ts(Ti) < ts(Tk). Ti -> transaccin ms vieja y Tk -> transaccin ms joven.
Ordenamiento de Timestamps
Rechazar la operacin significa que la transaccin que la envi necesita reiniciarse para obtener el ts ms reciente del dato e intentar hacer nuevamente la operacin sobre el mismo.
Ordenamiento de Timestamps
1. Conservador:
Se retrasan las operaciones de la transaccin hasta que un orden de ejecucin pueda ser establecido tal que los rechazos no son posibles. Cada manejador de transacciones(i) posee una cola Qij en donde almacena todas las operaciones que recibe de un majeador j en orden creciente asignndole un timestamp.
Cuando est seguro de que ninguna otra operacin con un ts menor puede llegar al despachador ejecutan las operaciones en el orden de las colas. Pero este delay introduce la posibilidad de abrazo mortal.
Ordenamiento de Timestamps
1. Multiversin:
Cada operacin de escritura crea una nueva versin del item de dato. Esta versin es marcada con el ts de la transaccin que la cre.
Algoritmos Optimistas
Pesimistas: Validacin -> lectura -> clculo -> escritura Optimistas: Lectura -> clculo -> validacin -> escritura Las operaciones nunca son retardadas. Cada transaccin hace sus actualizaciones sobre copias de elementos de datos locales. La fase de validacin consiste en chequear si las actualizaciones pueden mantener la consistencia de la BD. Si la mantienen se realizan los cambios sino la transaccin es abandonada y reiniciada.
Un AM requiere un ciclo en el grafo de espera de las transacciones. Un orden lineal (o cualquier orden parcial) evita tales ciclos.
Cmo lo detecta? Timeout -> Cuando una transaccin espera ms de un cierto tiempo, declara que algo anda mal y abandona.
Pero Timeout es un detector muy pesimista porque cualquier espera larga la declara como un AM. La tcnica es detectarlo a travs de un grafo de espera, ya que en todo instante las transacciones definen un grafo de espera dirigido.
Todas las transacciones son los nodos del grafo. Existe un arco de una transaccin T a otra transaccin T si: T esta esperando por un objeto mantenido por T T eventualmente esperara por un objeto que le ser asignado a T. Ambas esperan por el mismo objeto, y T est despus de T en la lista de espera.
Un ciclo en el grafo de espera es llamado un AM. Entonces la deteccin de AM consiste en buscar ciclos en el grafo de espera.
TA
TA1
TA11 TA12 TA21
TA2
TA22 TA23
TA221
TA222
TA223
TA224
TA
Grafo de Espera