Escolar Documentos
Profissional Documentos
Cultura Documentos
Unidades
indivisveis
sees crticas
Tabela de Bloqueios
Concedido
Esperando
Bloqueios
Compartilhados/Exclusivos (ou
Leitura/Escrita)
Quando usamos o esquema de bloqueio Compartilhados/Exclusivo,
o sistema deve impor as regras:
1. Uma transao T deve garantir a operao read_lock(X) ou
write_lock(X) antes de qualquer operao ler_item(X) ser executada em
T.
2. Uma transao T deve garantir a operao write_lock(X) antes de
qualquer operao escrever_item(X) ser executada em T.
3. Uma transao T deve garantir a operao unlock(X) depois que todas
as operaes ler_item(X) e escrever_item(X) so completadas em T.
4. Uma transao T no usar uma operao read_lock(X) se ela j
controlar um bloqueio de leitura ou um bloqueio de escrita no item X.
Relaxada.
5. Uma transao T no usar uma operao write_lock(X) se ela j
controlar um bloqueio de leitura ou um bloqueio de escrita no item X.
Relaxada.
6. Uma transao T no usar uma operao unlock(X) a menos que ela
j controle um bloqueio de leitura ou de escrita em um item X.
Figura 18.4 Transaes que no obedecem ao bloqueio em duas fases.
(a) Duas transaes T1 e T2. (b) Resultado dos possveis planos
de execuo seriais de T1 eT2. (c) Um plano de execuo no
serializvel S que usa bloqueios.
Os bloqueios binrios ou
compartilhados no
garantem seriao.
Garantindo seriao pelo Bloqueio
em Duas fases
Uma transao segue o protocolo de bloqueio em
duas fases se todas as operaes de bloqueio
precedem a primeira operao de desbloqueio. Tem
duas fases:
1. expanso ou crescimento: novos bloqueios nos itens podem
ser adquiridos, mas no podem ser liberados; e
2. encolhimento: os bloqueios existentes podem ser liberados,
mas novos bloqueios no podem ser adquiridos.
Com converso de bloqueios, a promoo feita
durante a expanso, e o rebaixamento na fase de
encolhimento.
As transaes T1 e T2 da figura passada no
seguem o protocolo em duas fases. Qual o motivo?
Figura 18.4 Transaes que no obedecem ao bloqueio em duas fases.
(a) Duas transaes T1 e T2. (b) Resultado dos possveis planos
de execuo seriais de T1 eT2. (c) Um plano de execuo no
serializvel S que usa bloqueios.
Desbloqueio e
aps outro
Desbloqueio bloqueio
e aps outro
bloqueio
Garantindo seriao pelo Bloqueio
em Duas fases
As transaes T1 e T2 (reescritas de T1 e T2) para
impor o bloqueio em duas fases (Veja Fig. 18.4). O
plano de execuo acima no pode ser gerado.
Pode ser provado que, se toda transao em um plano
seguir o protocolo de bloqueio em duas fases,
garantido que o plano seja serializvel.
O bloqueio em duas fases pode limitar a quantidade de
concorrncia que pode surgir em um plano de
execuo.
Figura 18.5 Transaes T1 eT2, que so as mesmas que T1 e T2 da Figura
18.3, mas que seguem o protocolo de bloqueio de duas fases.
Observe que elas podem produzir um deadlock.
Expanso Expanso
Encolhimento Encolhimento
Bloqueio em Duas Fases Bsico,
Conservador, Estrito e Rigoroso
Vrios tipos de bloqueios em duas fases (2PL), o
mencionado acima o bsico.
2PL Conservador ou esttico: a transao deve
bloquear todos os itens que ela acessa antes de iniciar
a sua execuo. Difcil de usar na prtica devido
necessidade da pr-declarao de read-set e write-set
que no possvel na maioria das situaes.
2PL Estrito, garante planos estritos. T no libera
nenhum de seus bloqueios exclusivos at que ela
efetive ou aborte.
Lidando com Deadlock (Impasse)
e Starvation (Inanio)
O deadlock ocorre quando cada transao em
um conjunto de duas ou mais transaes
espera por algum item que esteja bloqueado
por alguma outra transao T no conjunto.
Ex: fig. 18.5 as transaes T1 e T2 esto
em deadlock. Nenhuma transao pode
acessar os itens X e Y.
Figura 18.5 Ilustrao do problema de deadlock: plano de execuo parcial de
T1 e T2 que est em um estado de deadlock.
Protocolos de Preveno de
Deadlock
Um protocolo de preveno para bloqueios em
duas fases conservador, requer que cada
transao bloqueie todos os itens que ela
necessita no avano (no prtico). Ela no
comea at no conseguir bloquear todos os
itens que precisa. Limita a concorrncia.
Outra opo envolve a ordenao de todos os
itens no BD. A transao que os necessita, os
bloquear nessa ordem. No prtico.
Protocolos de Preveno de
Deadlock
Outros esquemas, permitem decidir o que fazer com
uma transao envolvida em uma possvel situao de
deadlock: ela deveria ser bloqueada e ter de esperar
ser abortada ou assumir e abortar uma outra
transao?
Usam o conceito de timestamp da transao TS(T), id
nico para cada transao. Baseados na ordem em
que as transaes so iniciadas.
TS(T1)<TS(T2), se T1 inicia antes de T2.
Dois esquemas: esperar-morrer (wait-die) e ferir-
esperar (wound-wait)
Protocolos de Preveno de
Deadlock
Suponha que Ti tente bloquear um item X mas no
pode porque X est bloqueado por Tj com um bloqueio
conflitante. As regras seguida so:
Esperar-morrer: Se TS(Ti)<TS(Tj), Ti pode esperar; seno (Ti
mais nova) aborta Ti e reinicia mais tarde com o mesmo
timestamp. As transaes mais velhas so as que esperam,
nenhum ciclo criado.
Ferir-esperar: Se TS(Ti)<TS(Tj), aborta Tj (Ti fere Tj) e
reinicia mais tarde com o mesmo timestamp; seno (Ti mais
nova) Ti espera. As transaes somente esperam as mais
velhas, nenhum ciclo criado.
Ambos os esquemas finalizam abortando a transao
mais jovem, que pode estar envolvida em um
deadlock. Problema de aborto desnecessrio.
Protocolos de Preveno de
Deadlock
Outro grupo que no usa timestamp: algoritmos no
waiting e cautious waiting.
No waiting, se uma transao no estiver apta a obter um
bloqueio, ela ser imediatamente abortada e, ento, reiniciada
depois de um certo tempo.
cautious waiting, diminui o nmero de abortos
desnecessrios. A transao Ti tenta bloquear X, mas no
pode porque Tj o bloqueou.
Se Tj no est bloqueado (no est esperando por algum outro
item bloqueado), ento Ti bloqueado e poder esperar; caso
contrrio, aborta Ti.
dead-lock free.
Deteco de Deadlock e Timeouts
Neste caso o sistema verifica se um estado de deadlock
realmente existe. atrativa se soubermos que existem poucas
interferncias entre as transaes (transaes curtas, bloqueando
poucos itens). Caso contrrio, melhor preveno.
Grafo wait-for. Um n por cada transao sendo executada.
Quando uma transao Ti est esperando bloquear um item X
bloqueado por Tj, uma ligao (Ti Tj) criada no grafo. A
ligao eliminada quando X for liberada. Existe um deadlock
quando este grafo tiver um ciclo.
O problema quando verificar? : nmero de transaes
concorrentes e tempo de espera mdio.
Deteco de Deadlock e Timeouts
Em estado de deadlock, algumas transaes
devem ser abortadas. Seleo de vitimas.
Evitar selecionar transaes em execuo h
muito tempo e com muitas atualizaes.
Outro esquema: timeouts. Mtodo prtico, se
uma transao esperar por um perodo maior
que um tempo definido, se assume que est
em deadlock e deve abortar.
Inanio (Starvation)
Ocorre quando uma transao no pode continuar por
um perodo indefinido de tempo, enquanto que outras
so executadas.
Parcializao do esquema de espera.
Soluo um esquema de espera imparcial uma fila.
Outro esquema o de prioridade por tempo de espera
ou abortadas muitas vezes. Os esquemas wait-die e
wound-wait evitam inanio.
Controle de concorrncia baseado
em ordenao de Timestamp
Timestamp identificador nico criado pelo
SGBD para identificar uma transao
momento de incio da transao. TS(T).
No so usados bloqueios no ocorrem
deadlocks.
O algoritmo de ordenao por
Timestamp
Se uma transao velha Ti tem um time-stamp TS(Ti), uma
transao nova Tj atribuida um time-stamp TS(Tj) tal que TS(Ti)
<TS(Tj).
O algoritmo gerencia a execuo concorrente de tal forma que os
time-stamps determinam a ordem de seriao.
Para fazer isso, o algoritmo associa a cada item X do BD, dois
valores de timestamp:
Read_TS(X) o maior timestamp entre todos os timestamps de transaes
que tenham lido o item X com sucesso. Read_TS(X) = TS(T), onde T a mais
nova que tenha lido X com sucesso.
Write_TS(X) o maior timestamp entre todos os timestamps de transaes
que tenham escrito o item X com sucesso. Write_TS(X) = TS(T), onde T a
mais nova que tenha escrito X com sucesso.
O algoritmo de ordenao por
Timestamp (Cont.)
O algoritmo se certifica de que qualquer operao de
leitura ou escrita conflitante executada em ordem de
timestamp.
Suponhamos que uma transao Ti tenta executar um
escrever_item(X)
1. Se read_TS(X) > TS(Ti) ou se write_TS(X) > TS(Ti), ento Ti
aborta e reverte, e a operao rejeitada. Uma operao mais
nova que Ti j leu ou escreveu o valor do item X antes de Ti,
violando a ordenao por timestamp.
2. Seno, Ti executa a operao escrever_item(X) e grava
write_TS(X) com TS(Ti).
O algoritmo de ordenao por
Timestamp (Cont.)
Suponhamos que uma transao Ti tenta
executar um ler_item(X).
1. Se write_TS(X) > TS(Ti ), ento Ti aborta, reverte e
rejeita a operao. Isso ocorre porque alguma
transao mais nova, j teria escrito o valor no item
X antes que Ti tivesse a chance de ler X.
2. Se write_TS(X) TS(Ti ), ento executa a operao
de ler_item(X) de Ti, , e atualiza read_TS(X) com
max(TS(Ti,), read_TS(X)).
Tcnicas de Controle de
Concorrncia de Multiverso
Armazenam valores antigos dos itens atualizados.
Uma transao acessa uma verso apropriada do item
com o objetivo de manter, se possvel a serializao.
A idia que algumas operaes de leitura que foram
rejeitadas por outras tcnicas, possam ser aceitas
acessando uma verso mais antiga do item,
garantindo a serializao.
Uma desvantagem o espao necessrio para
armazenar as mltiplas verses. Entretanto isto j
feito para a recuperao e em BDs temporais.
Tcnica de multiverso Baseada
em ordenao por Timestamp.
Neste mtodo, diversas verses X1, X2,...,Xk de cada
item de dado X so armazenadas. Para cada verso
de X, os dois timestamps so mantidos: read_TS(Xi) e
write_TS(Xi).
Se uma transao T pode executar uma operao
escrever_item(X), uma nova verso Xk+1 do X ser
criada com read_TS(Xk+1) e write_TS(Xk+1),
atualizadas para TS(T).
Quando T pode ler o valor da verso Xi, o valor de
read_TS(Xi) ser atualizado para max(read_TS(Xi),
TS(T))
Tcnica de multiverso Baseada
em ordenao por Timestamp
Suponhamos que a transao Ti executa uma operao ler_item(X) ou
escrever_item(X). Seja Xk a verso de X cujo write_TS(X) o mais alto
de todas as verses de X, que tambm menor ou igual TS(Ti).
1. Se a transao Ti executa um ler_item(X), ento o valor retornado o
contedo da verso Xk.
2. Se a transao Ti executa um escrever_item(X)
1. Se TS(Ti) < read_TS(Xk), ento a transao Ti abortada.
2. Se TS(Ti) = write_TS(Xk), o contedo de Xk sobre-escrito
3. Seno uma nova verso de X criada.
Observe que
A leitura sempre tem sucesso
Uma escrita de Ti rejeitada se alguma outra transao Tj que (na ordem de
serializao definida pelos valores de timestamp) deveria ler o escrito po Ti,
tem j lido a verso j criada por uma transao mais velha que Ti.
O Protocolo garante seriao
Bloqueio em Duas fases de
Multiverso Usando Bloqueios de
Certificao
H 3 modos de bloqueio: ler, gravar e
certificar. LOCK(X) = read_locked ou
write_locked ou certify_locked ou unlocked.
Fig. 18.6a. tabela de compatibilidade de
bloqueio padro.
A idia deste protocolo permitir que outras
transaes T leiam um item X enquanto uma
transao T mantem um bloqueio de escrita
sobre X.
Bloqueio em Duas fases de
Multiverso Usando Bloqueios de
Certificao
Isto possvel utilizando-se duas verses para cada item X; uma
verso deve sempre ser gravada por alguma transao efetivada.
A segunda verso X criada quando uma transao T adquire
um bloqueio em um item.
Outras transaes podem continuar lendo a verso efetivada de
X, enquanto T controla o bloqueio de escrita em X sem afetar a
verso efetivada.
Uma vez T esteja pronta para efetivar, ela deve obter um bloqueio
de certificao de todos os itens bloqueados para gravao.
O bloqueio de certificao no compatvel com os bloqueios de
leitura, assim, a transao pode atrasar a sua efetivao at que
todos os itens de escrita bloqueados sejam liberados para
obter os certificados de bloqueio.
Bloqueio em Duas fases de
Multiverso Usando Bloqueios de
Certificao
Uma vez os certificados so adquiridos, a
verso X efetivada atribudo o valor X, que
descartada e os bloqueios de certificao
so liberados. Veja a nova tabela de
compatibilidade de bloqueio Fig. 18.6b.
Figura 18.6 Tabelas de compatibilidade de bloqueio. (a) Uma tabela de
compatibilidade para o esquema de bloqueio read/write. (b) Uma tabela de
compatibilidade para o esquema de bloqueio
ler/escrever/certificar.
Granularidade
Um item de BD pode ser:
Um registro.
Um valor de um campo de um registro.
Um bloco de disco.
Um arquivo.
Um banco de dados inteiro.
A granularidade pode afetar a execuo do
controle de concorrncia e recuperao.
Consideraes sobre Nveis de
Granularidade para Bloqueio
O tamanho dos itens de = granularidade.
Quanto maior o tamanho do item de dados mais baixo o grau de
concorrncia permitido
Porm, quanto menor o tamanho do item de dados, maior ser o
nmero de itens em um BD maior nmero de bloqueios ativos,
mais operaes de bloqueio e desbloqueio sero executadas:
maior sobrecarga do sistema.
Qual o melhor tamanho do item?
Depende dos tipos de transaes envolvidas. Se uma transao
tpica acessa muitos registros em um mesmo arquivo
granularidade maior.
Bloqueio de Nvel de
Granularidade Mltipla
J que o melhor tamanho de granularidade
depende da transao dada mltiplos nveis de
granularidades.
Veja fig. 18.7. Suporte ao protocolo 2PL de nvel de
granularidades mltipla. Ex: T1 bloqueando f1 e T2
r1nj. Tentar bloquear T1 complicado.
Para tornar prtico este protocolo bloqueios de
inteno.
A idia que a transao indique, ao longo do
caminho da raz ao n desejado, qual tipo de
bloqueio ele ir solicitar.
Bloqueio de Nvel de
Granularidade Mltipla
Trs tipos de bloqueio:
Inteno-compartilhada (IS) indica que bloqueio(s)
compartlhado(s) ser(o) solicitado(s) em algum(ns)
n(s) descendentes(s)
Inteno-exclusva (IX) indica que bloqueio(s)
exclusvo(s) ser(o) solicitado(s) em algum(ns)
n(s) descendentes(s)
Inteno-compartilhada-exclusva (SIX) indica que o
n corrente est bloqueado compartilhado, mas
bloqueio(s) exclusivo(s) ser(o) solicitado(s) em
algum(ns) n(s) descendentes(s)
Bloqueio de Nvel de Granularidade
Mltipla
Veja a tabela de compatibilidade dos bloqueios de inteno. Fig.
18.8
O protocolo de bloqueio de granularidade mltipla (MGL) consiste
das seguintes regras:
1 Cumprir a compatibilidade definida na tabela 18.8
2 A raz da rvore deve ser bloqueada primeiro (qualquer modo)
3 Um n pode ser bloqueado no modo S ou IS por uma transao T, s
se o pai estiver bloqueado pela transao T no modo IS ou IX.
4 Um n pode ser bloqueado no modo X, IX ou SIX por uma transao T,
s se o pai estiver bloqueado pela transao T no modo IX ou SIX.
5 Uma transao pode bloquear um n apenas se ela no tiver nenhum
n desbloqueado (2PL)
6 Uma transao T pode bloquear um n apenas se nenhum dos seus
ns filhos estiverem correntemente bloqueados por T.
Figura 18.7 Uma hierarquia de granularidade para ilustrar bloqueio de nvel de
granularidade mltipla.
Figura 18.8 Uma matriz de compatibilidade de bloqueio para bloqueio
de granularidade mltipla.
Figura 18.10 Operaes de bloqueio para ilustrar um plano de execuo
serializvel.