Vous êtes sur la page 1sur 31

La mayora de las bases de datos se utilizan en entornos multi-usuario, en los que muchos

clientes utilizando la misma aplicacin, o muchas aplicaciones cada una con uno o muchos
clientes acceden a la misma base de datos..

Tcnicas del bloqueo..


Bloqueo en dos fases
Interbloqueo
Granularidad

Ordenamiento por marcas de tiempo..


Ordenamiento total / Ordenamiento parcial
Regla de Thomas

Tcnicas multiversin

Tcnicas de Validacin
Granularidad de elementos de datos

Bloqueo de granularidad mltiple

Usos de bloqueo para control de concurrencia en ndice

Otras cuestiones sobre el control de concurrencias.


Las tcnicas ms empleadas para controlar el acceso concurrente de las
transacciones se basan en el concepto de bloquear elementos de
datos.

Un bloqueo corresponde a una variable asociada al grnulo que


describe las operaciones que se pueden realizar sobre l.

Dado que dos operaciones de transacciones diferentes sobre el mismo


grnulo que no sean permutables pueden provocar violaciones en el
orden de serializacin, pueden prevenirse las violaciones bloqueando
los accesos a dicho grnulo
Matriz binaria de compatibilidad:: Es una matriz binaria que
describe las operaciones compatibles ( 1 = s,, 0 = no)..
C leer escribir
leer 1 0
escribir 0 0

Se introducen operaciones adicionales en las transacciones:

bloquear(g, M): indica al planificador el comienzo de una operacin o conjunto


de ellas de modo definido por M sobre el grnulo g.

desbloquear(g): indica al planificador el final de las operaciones realizadas por la


transaccin correspondiente.

Un modo de operacin M es un vector binario que indica las


operaciones que una T desea bloquear sobre el grnulo g..
p.e., si leer o escribir modo M=(1 0) o (0 1) o (1 1)
Una transaccin en el esquema del bloqueo deber:

Emitir una operacin bloquear(g,M) antes de operar sobre g en el modo


M..
Emitir una operacin desbloquear((g)) despus de terminar la operacin u
operaciones correspondientes..
No emitir una operacin bloquear si ya tiene el bloqueo sobre el grnulo
(excepto promociones)..
No emitir una operacin desbloquear a menos que ya posea el bloqueo
correspondiente.

El mdulo de gestin de bloqueos del SGBD se ocupa de asegurar que se


cumpla lo anterior.
Qu informacin se necesita mantener en el protocolo del
bloqueo?
Informacin sobre las transacciones que bloquean un determinado
grnulo: tabla de bloqueo.

Ti
A(g,i)=[a1,a2,..,aj,...,ak]
g

aj=1 si Ti tiene bloqueado g para esa operacin.


aj=0 si Ti no tiene bloqueado g para esa operacin

Las operaciones solicitados para una transaccin se almacenan en un


vector de bits M (los k valores son las diferentes operaciones posibles,
normalmente 2, lee y esc):

M=[m1,m2,..,mj,...,mk]
Proposicin: los modos de operacin solicitados durante una
accin de bloquear((g,, M,, Tp)) son compatibles con los
modos de operacin actualmente bloqueados s se cumple lo
siguiente:

( (Ui!=p A(i,g)) * C ) M

Qu hacer cuando las operaciones no son compatibles?


Se guarda la peticin en una colla de espera,, y se bloquea la
transaccin hasta que el grnulo est disponible.

La insercin en la cola de espera puede seguir diversos criterios

Cada grnulo tiene una cola de espera que indica las


transacciones que estn esperando para utilizarlo y el modo
de operacin que solicitan.
Se llama transaccin en dos fases aquella que no
realiza ningn bloqueo despus de haber realizado
alguna operacin de desbloquear. En una
transaccin en dos fases:
FASE DE EXPANSIN ( o de crecimiento), durante la cual
se pueden adquirir nuevos bloqueos sobre elementos
pero no se puede liberar ninguno.
FASE DE CONTRACCIN, durante la cual se pueden
liberar todos los bloqueos existentes pero no se pueden
adquirir nuevos bloqueos.
Proposicin: toda planificacin compuesta de
transacciones en dos fases es serializable.
El protocolo en dos fases limita la concurrencia pero
garantiza que los planes sean serializables.
B2F bsico: va tomando bloqueos y luego los va
liberando.
B2F conservador: toma todos los bloqueos al principio
y si no se espera (poco prctico).
B2F estricto: no libera ningn bloqueo exclusivo hasta
despus de confirmar o abortar. (asegura
planificaciones estrictas)
B2F riguroso: no libera ningn bloqueo hasta despus
de confirmar o abortar.
Se basa en asegurar que el acceso a los grnulos por las
transacciones se realiza en el orden asignado inicialmente
(que es el orden de inicio de las transacciones).
Si esto no se cumple: se debe abortar una transaccin (la
que produjo el conflicto) se revierte la transaccin y se
relanza asignndole otra marca tiempo.
Posible codificacin:
Un enfoque para garantizar la seriabilidad de los planes
supone usar marcas de tiempo para ordenar la ejecucin
de estas.
Una marca de tiempo es un identificador nico que el
SGBD crea para identificar una transaccin.
Las marcas de tiempo se asignan en el orden en que las
transacciones se introducen en el sistema.
Generacin de marcas de tiempo:
Contador
Reloj del sistema
La marca de tiempo de grnulo es un valor numrico
asociado con un grnulo que almacena la marca de
tiempo de la ltima transaccin que oper sobre el
grnulo.
Se intenta ordenar aquellas operaciones que son
conflictivas (y que no son permutables).
Se definen dos marcas de tiempo para un grnulo:
Marca de tiempo de lectura ( MT lec(g) ): corresponde
a la mayor (la ms alta) marca de tiempo de las
transacciones que han ledo el granulo.
Marca de tiempo de escritura (( MT_esc(g)):
corresponde a la mayor (la ms alta) marca de tiempo
de las transacciones que han escrito en el granulo.
Este algoritmo comprueba si las operaciones en conflicto
respetan el orden asignado a las transacciones. Se
realizan comprobaciones diferentes para las operaciones
de lectura y escritura.
Regla de escritura de Thomas: constituye una mejora del
algoritmo anterior en la escritura. Si una transaccin
pretende escribir en un grnulo con una MT_esc > MT de
la transaccin, se puede ignorar dicha escritura (siempre
que ninguna transaccin con marca posterior haya ledo
el granulo).
Este algoritmo consiste en ir guardando varias versiones del
mismo dato (grnulo): se conservan los valores antiguos de los
grnulos que se han actualizado.

Lectura: Cuando una Transaccin necesita leer algn grnulo,


se elige una versin adecuada para mantener la seriabilidad de
la planificacin, si es posible.

Escritura: Cuando una Transaccin escribe un grnulo, escribe


una nueva versin de ese grnulo, conservndose adems la
versin anterior.
Desventaja: requiere ms almacenamiento que los anteriores.
Muchas veces estas versiones se aprovechan para la
recuperacin.
CODIFICACION
Si hay pocas interferencias (conflictos) entre
transacciones (mayoritariamente son lecturas), casi todas
se validarn sin dificultad (por ello se llaman optimistas).
Existen varios algoritmos de este tipo. Uno de ellos se
basa en la asignacin de marcas de tiempo.
La fase de validacin comprueba para cada transaccin Ti
las siguientes condiciones:
GRANULARIDAD DE DATOS
Elementos de bases de datos y granularidad
Toda tcnica de control de concurrencia supone que la base
de datos est constituida por un conjunto de elementos de
datos con nombre
Normalmente, un elemento de datos ser uno de estos:
un valor de campo de un registro de la BD
un registro de la BD
una pgina (uno o varios bloques de disco)
un fichero
la BD completa
Granularidad = tamao del elemento de informacin
Granularidad fina elementos de tamao pequeo
Granularidad gruesa elementos grandes
En el contexto de los mtodos de bloqueo, el tamao del
elemento de datos afecta al grado de concurrencia:
tamao(elemento) Grado de concurrencia
Y tambin...
nmero de elementos en la BD
carga de trabajo para la gestin de
bloqueos, y
espacio ocupado por la informacin de
bloqueo
Pero... Cul es el tamao adecuado para los elementos?
Pues depende de la naturaleza de las transacciones:
Si una T representativa accede a pocos registros
elegir granularidad de registro
Si T accede a muchos registros de un mismo fichero
elegir granularidad de pgina o de fichero
GRANULARIDAD MULTIPLE

Para trabajar con granularidad mltiple se define una


matriz de compatibilidad con los modos normales y los
modos de intencin, repitindose C y siendo E una matriz
de unos.
L E IL IE
POR EJEMPLO:
L E L 1 0 1 0
C C
C E E 0 0 0 0
L 1 0
IL 1 0 1 1
E 0 0
IE 0 0 1 1
GRANULARIDAD MULTIPLE

Para bloquear un grnulo en un modo determinado, la


transaccin debe bloquear todos los grnulos que lo
contengan en modo de intencin y el grnulo en modo
normal.
USO DE BLOQUEO PARA EL CONTROL DE
CONCURRENCIA EN INDICE.
Generalmente los bloqueos se hacen en los ndices, de manera
que hay ciertas variantes entre los distintos tipos.
B-tree indexes:
Bloqueos exclusivos o compartidos para R/W a nivel de pgina
Los bloqueos son liberados inmediatamente despus de que
cada tupla es recuperada o insertada
Proveen la ms alta concurrencia sin condiciones de
"deadlock"
Hash indexes:
Bloqueos exclusivos o compartidos para R/W a nivel de pgina
Los bloqueos son liberados inmediatamente despus de que cada
pgina es procesada
El bloqueo por pgina es mejor (hablando de concurrencia) que
aquellos por nivel de ndice pero son ms factibles para
"deadlocks"
B-Tree ndices ofrecen el mejor rendimiento para
aplicaciones concurrentes, adems de tener ms ventajas
que los ndices hash. Son recomendados para
aplicaciones que requieren indexar datos "escalares" en
otro caso hay que esta consientes de las limitantes que
presentan los otros esquemas.
OTRAS CUESTIONES SOBRE EL CONTROL
DE CONCURRENCIAS.
Bloqueos mortales o interbloqueos: (deadlock)

Un sistema est en estado de interbloqueo cuando toda


Ti del conjunto de Ts que estn en ejecucin, est
esperando por algn recurso que tiene bloqueado otra Ti.
Suceden cuanto ms alto es el grado de Aislamiento.

Hay dos estrategias: prevenirlos o


detectarlos+recuperacin.
OTRAS CUESTIONES SOBRE EL CONTROL
DE CONCURRENCIAS.
Prevencin:
1.- Usando bloqueos solamente:
- BSF conservador: o todos los elementos
bloqueados o ninguno
- Difcil predecir qu bloqueos necesito antes de
empezar
- Se mantienen bloqueos innecesarios
- Fijar un orden parcial preestablecido de
ejecucin de las Ts: protocolo de rbol
- Se necesita conocer el orden para programar:
difcil.
OTRAS CUESTIONES SOBRE EL CONTROL
DE CONCURRENCIAS.
Usando MTs y bloqueos: cada Ti. se pone su MT, y
el CC usa bloqueos.
Dos estrategias para decidir quien tiene que
esperar o retroceder si Ti solicita un elemento que
tiene bloqueado Tj :
- Esperar-morir: - Ti espera solo si MT(Ti) < MT(Tj) -- Ti
anterior a Tj
- En otro caso Ti muere
- Herir-esperar: - Ti espera solo si MT(Ti) > MT(Tj)
- En otro caso Tj se retrocede --Ti hiere a Tj -- y Tj
expropia el elemento en conflicto
No se producen esperas indefinidas (inanicin):si Ti
retrocede conserva su MT antigua.
OTRAS CUESTIONES SOBRE EL
CONTROL DE CONCURRENCIAS.

Diferencias de funcionamiento en las dos estrategias:


- Esperar-morir: -Cuanto ms antigua es T, ms espera
-La Ti que muere, puede morir varias veces si el
recurso sigue bloqueado
- Herir-esperar: -Una T antigua no espera a una T
reciente
-Entre Ti y Tj se alternan la espera.

Vous aimerez peut-être aussi