Você está na página 1de 37

Universidade Federal do Piau

Centro de Ensino Aberto e a


Distncia
Curso de Sistemas de
Informao

Bancos de Dados: Controle de Concorrncia


Prof. Arlino Magalhes
arlino@ufpi.edu.br
1

Sumrio
1. Protocolos de Controle de Concorrncia
2. Protocolos Baseados em Bloqueios
1.
2.
3.
4.
5.

Protocolo
Protocolo
Protocolo
Protocolo
Protocolo

de
de
de
de
de

Bloqueio
Bloqueio
Bloqueio
Bloqueio
Bloqueio

Bsico
em Duas
em Duas
em Duas
em Duas

Fases
Fases
Fases
Fases

(Bsico)
Preciso (Strict)
Rigoroso
Conservador

3. Tratamento de Impasse (deadlock)


1.
2.

Deteco e Resoluo
Preveno

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Protocolos de Controle de
Concorrncia
Os modelos de processamento de transaes so implementados atravs dos protocolos de
controle de concorrncia.
Esses protocolos so responsveis por produzir estrias (schedules) em conformidade com o
critrio de corretude (ou correo) adotado.
Classificao:
Agressivos
Pessimistas
Otimistas
Conservadores

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Protocolos de Controle de
Concorrncia
Protocolo Agressivo:
Tenta escalonar as operaes imediatamente.
Esse protocolo evita adiar a execuo das operaes de uma transao.
Entretanto, essa estratgia pode levar a situaes onde no possvel produzir uma execuo
correta de todas as transaes ativas.
Protocolo Pessimista: decide se aceita ou rejeita uma operao to logo ele receba essa operao.
Protocolo Otimista: escalona as operaes que recebe de forma imediata. Aps um determinado
perodo de tempo, o scheduler verifica se o schedule que est sendo gerado correto ou no. Caso
o schedule seja correto, o scheduler continua escalonando operaes. Caso contrrio, o scheduler
deve abortar uma ou mais transaes.

Protocolo Conservativo:
Tende a adiar a execuo de determinadas operaes com a finalidade de escalon-las
corretamente.
Esses protocolos, apesar de no induzir o abort de transaes, podem levar as aplicaes a tempos
de espera inaceitveis, principalmente se essas forem transaes de longa durao.
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Protocolos Baseados em Bloqueios


Conceitos Iniciais
Nos protocolos baseados em bloqueio, uma transao Ti s acessa um item de dado aps
obter um bloqueio sobre esse item.
Caso um item de dado esteja bloqueado previamente pela transao T j, ento para a
transao Ti acessar esse mesmo item de dado, Ti dever esperar at que o bloqueio seja
liberado por Tj.
Com os protocolos de bloqueio, o scheduler garante que somente uma transao pode
acessar um determinado item de dado por vez.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Protocolos Baseados em Bloqueios


Conceitos Iniciais
Cada item de dado (objeto) s pode estar em dois estados:
1.
2.

bloqueado: permite acesso ao objeto apenas pela transao que detm o bloqueio;
livre: ainda no est bloqueado por nenhuma transao. Logo, esse item de dado ainda no
pode ser acessado por nenhuma transao, uma vez que para acessar um determinado item de
dado uma transao precisa inicialmente obter um bloqueio sobre esse item.

Operaes:
1.
2.

li(x) bloqueia (lock) o item de dado x para a transao Ti;


ui(x) faz a transao Ti liberar (unlock) o bloqueio que detm sobre o item de dado (objeto) x;

As informaes necessrias para gerenciar a concesso e liberao de bloqueios so, em


geral, armazenadas em uma estrutura de dados denominada tabela de bloqueios.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Protocolo de Bloqueio Bsico


No Protocolo de Bloqueio Bsico, o escalonador deve seguir os seguintes passos para uma
transao Ti acessar o objeto x:
1.
2.
3.

solicitar o bloqueio do objeto x por meio da operao li(x);


se x est livre (no est bloqueado por uma outra transao), ento x bloqueado;
caso contrrio, a Ti deve aguardar x ser desbloqueado em uma fila;

Nesse protocolo, para uma transao Ti liberar o bloqueio que possui sobre uma x, o
escalonador deve executar uma operao ui(x).

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Protocolo de Bloqueio Bsico


Exemplo (bloqueio bsico com modo nico de bloqueio):
T1 = r1(x) r1(y) w1(x) w1(y) c1
T2 = r2(x) c2

S1 no um
escalonamento,
representa a ordem com
S1 = r1(x) r2(x) c2 r1(y) w1(x) w1(y) c1que as operaes das
transaes T1 e T2
chegaram ao
Processo de
escalonador.
Escalonamento
O escalonador,
S2 = l1(x) r1(x) l1(y) r1(y) w1(x) w1(y) u1(x) l2(x) r2(x) u2(x) c2utilizando
u1(y) c1 o protocolo de
bloqueio bsico, gera o
escalonamento S2.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Protocolo de Bloqueio Bsico


Exemplo (bloqueio bsico com modo nico de bloqueio):
T1 = r1(x) r1(y) w1(x) w1(y) c1
T2 = r2(x) c2

S1 no um
escalonamento,
representa a ordem com
S1 = r1(x) r2(x) c2 r1(y) w1(x) w1(y) c1que as operaes das
transaes T1 e T2
chegaram ao
Processo de
escalonador.
Escalonamento
O escalonador,
S2 = l1(x) r1(x) l1(y) r1(y) w1(x) w1(y) u1(x) l2(x) r2(x) u2(x) c2utilizando
u1(y) c1 o protocolo de
bloqueio bsico, gera o
escalonamento S2.
As operaes l2(x) e, consequentemente, r2(x) s podem
ser executadas aps T1 desbloquear o item x atravs da
operao
u1(x).
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Protocolo de Bloqueio Bsico


Bloqueios Compartilhado e Exclusivo: o protocolo de bloqueio bsico pode ser melhorado
incorporando-se modos diferentes de bloqueio:
Bloqueio de leitura ou compartilhado: read lock rl
Duas ou mais transaes podero ler o item x simultaneamente, sem perigo de conflito,
bloqueando-o para leitura.
Bloqueio de escrita ou exclusivo: write lock wl
Se uma transao deseja atualizar (gravar ou escrever) o item x, essa operao conflita com
qualquer outra operao de leitura ou escrita executada sobre x por outra transao.
Logo a trasao dever bloquear x em modo exclusivo (para escrita), no permitindo assim que
nenhuma outra transao bloqueie x em qualquer modo (leitura ou escrita).

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

10

Protocolo de Bloqueio Bsico


Exemplo (bloqueio bsico com dois modos de bloqueio):
T1 = r1(x) r1(y) w1(x) w1(y) c1
T2 = r2(x) c2

S1 no um
escalonamento,
representa a ordem com
S1 = r1(x) r2(x) c2 r1(y) w1(x) w1(y) c1que as operaes das
transaes T1 e T2
Processo de
chegaram ao
Escalonamento
escalonador.

O escalonador gera o
escalonamento S2
S2 = rl1(x) r1(x) rl2(x) r2(x) u2(x) c2 rl1(y) r1(y) wl1(x) w1(x) wl1(y) w1(y) u1(x)
u1(y) o
c1protocolo
utilizando
de bloqueio bsico
com dois modos de
bloqueio.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

11

Protocolo de Bloqueio Bsico


Exemplo (bloqueio bsico com dois modos de bloqueio):
T1 = r1(x) r1(y) w1(x) w1(y) c1
T2 = r2(x) c2

S1 no um
escalonamento,
representa a ordem com
S1 = r1(x) r2(x) c2 r1(y) w1(x) w1(y) c1que as operaes das
transaes T1 e T2
Processo de
chegaram ao
Escalonamento
escalonador.

O escalonador gera o
escalonamento S2
S2 = rl1(x) r1(x) rl2(x) r2(x) u2(x) c2 rl1(y) r1(y) wl1(x) w1(x) wl1(y) w1(y) u1(x)
u1(y) oc1protocolo
utilizando
de bloqueio bsico
com dois modos de
T2 precisa fazer uma
bloqueio.
leitura em X antes
O schedule S2 no poderia ser obtido pelo
que T1 desbloqueie
protocolo de bloqueio bsico com um
X.
nico modo de bloqueio.
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

12

Protocolo de Bloqueio Bsico

Supondo que A e B
possuem os saldos
iniciais de R$ 100,00
Problema da leitura suja:
Transfere R$ 50,00
e R$ 200,00;
T1
=
rl1(B)
r1(B)
wl1(B)
B-50)
u1(B)
da
conta B paraw1(B,
a
respectivamente.
rl1(A) r1(A) wl1(A) w1(A, A+50) u1(A) c1
conta A.
Aps a execuo
T2 = rl2(A) r2(A) u2(A) rl2(B) r2(B) u2(B)
serial das transaes
Apresenta a soma
Display (A+B) c2
(na ordem T1, T2 ou
das contas A e B.
T2, T1), a transao
T2 exibir o valor R$
300,00.
S1 = rl1(B) r1(B) wl1(B) w1(B, B-50) u1(B) rl2(A) r2(A) u2(A) rl2(B) r2(B) u2(B) Display
(A+B) c2 rl1(A)
r1(A)
wl1(A)
w1(A,
A+50)
u1(A) c1
T2 exibe a soma despois que T1
subtrai
R$ 50,00 de B e antes que o credite
em A.

A execuo concorrente (S1) das


transaes faz T2 exibir o valor R$
250,00; que no correto. Logo, o
protocolo de bloqueio bsico no evita
a ocorrncia de leituras sujas.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

13

Protocolo de Bloqueio Bsico


Problema da atualizao perdida:
T1 = rl1(x) r1(x) u1(x) rl1(y) r1(y) u1(y) wl1(x) w1(x) u1(x) c1
S1 apresenta o fenmeno
T2 = rl2(x) r2(x) u2(x) wl2(x) w2(x) u2(x) c2
da atualizao perdida,
pois o resultado da
S1 = rl1(x) r1(x) u1(x) rl2(x) r2(x) u2(x) rl1(y) r1(y) u1(y) wl1(x)
w1(x) de escrita w1(x)
operao
u1(x) wl2(x) w2(x) u2(x) c1 c2
ser sobrescrito pela
Operaes em conflito:
operao w2(x).
Pelo protocolo de bloqueio bsico, S1 - r1(x) < w2(x)
correto. Contudo, o grafo de
- r2(x) < w1(x)
O protocolo de
serializao de S1 mostra que esse
bloqueio bsico no
escalonamento no serializvel por Grafo de serializao
assegura a gerao
conflito. Assim, nesse caso, o
de execues
protocolo de bloqueio bsico
(schedules)
considerou correta uma execuo
T1
T2
serializveis!
incorreta.
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

14

Protocolo de Bloqueio Bsico


Problema do impasse (deadlock):

Transfere R$ 50,00
T3 = rl1(B) r1(B) wl1(B) w1(B, B-50) rl1(A)
da conta B para a
r1(A) wl1(A) w1(A, A+50) u1(B) u1(A) c1
conta A.
T4 = rl2(A) r2(A) rl2(B) r2(B) Display (A+B)
Apresenta a soma
u2(A) u2(B) c2
das contas A e B.
Quando T4 tenta obter
um bloqueio de leitura
sobre o item de dado B
(rl2(B)), esse j se
encontra bloqueado para
escrita pela transao T3
(rl1(B)). Ento T4 ir
esperar at que T3 libere
seu bloqueio de B.
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Quando T3 tenta obter um


bloqueio de escrita sobre o
item de dado A (wl1(A)),
esse j se encontra
bloqueado para leitura pela
transao T4 (rl2(A)). Ento
T3 ir esperar at que a
transao T4 libere o
bloqueio de A.
15

Protocolo de Bloqueio Bsico

Nesse momento, chega-se a uma


situao de impasse (deadlock),
Problema do impasse (deadlock):
Transfere R$ 50,00
ou
seja,
nenhuma
das duas
T3 = rl1(B) r1(B) wl1(B) w1(B, B-50) rl1(A)
da conta B para a
transaes
prossegue
sua
r1(A) wl1(A) w1(A, A+50) u1(B) u1(A) c1
conta A.
execuo! A transao T4 est
T4 = rl2(A) r2(A) rl2(B) r2(B) Display (A+B)
esperando pela transao
T3aesoma
a
Apresenta
u2(A) u2(B) c2
transao T3 est esperando
das contaspela
A e B.
transao T4.
Quando T4 tenta obter
Quando T3 tenta obter um
um bloqueio de leitura
bloqueio de escrita sobre o
sobre o item de dado B
item de dado A (wl1(A)),
(rl2(B)), esse j se
esse j se encontra
encontra bloqueado para
bloqueado para leitura pela
escrita pela transao T3
transao T4 (rl2(A)). Ento
(rl1(B)). Ento T4 ir
T3 ir esperar at que a
esperar at que T3 libere
transao T4 libere o
seu bloqueio de B.
bloqueio de A.
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

16

Protocolo de Bloqueio em Duas Fases


(Bsico)
O protocolo de bloqueio em duas fases (two
phase lock 2PL) semelhante ao protocolo
de bloqueio bsico, contudo exige que cada
transao emita suas solicitaes de
bloqueio e desbloqueio em duas fases:
1.

2.

Fase de expanso: uma transao est


nessa fase quando ela pode obter
bloqueios, mas no pode liberar nenhum;
Fase de encolhimento: uma transao pode
liberar bloqueios, mas no consegue obter
nenhum bloqueio novo.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

17

Protocolo de Bloqueio em Duas Fases


(Bsico)
2PL bsico evita o fenmeno leitura suja:
S1 = rl1(B) r1(B) wl1(B) w1(B, B-50) u1(B) rl2(A) r2(A) u2(A) rl2(B) r2(B) u2(B) Display (A+B) c2 rl1(A)
r1(A) wl1(A)
w1(A, A+50) u1(A) c1

S1 apresenta o problema da leitura suja. Esse


escalonamento no seria produzida pelo
protocolo 2PL bsico, pois T1 libera o bloqueio
obtido sobre o item B (u1(B)) e S1 no poderia
mais obter o bloqueio sobre o item A (rl2(A)).

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

18

Protocolo de Bloqueio em Duas Fases


(Bsico)
S1 no seria produzida
pelou1(x)
protocolo 2PL bsico,
S1 = rl1(x) r1(x) u1(x) rl2(x) r2(x) u2(x) rl1(y) r1(y) u1(y) wl1(x) w1(x)
pois depois que T1 e T2
wl2(x) w2(x) u2(x) c1 c2
liberam o bloqueio sobre o
item x (u1(x) e u2(x)),
2PL Bsico
essas transaes entram
na fase de encolhimento e
S2 = rl1(x) r1(x) rl2(x) r2(x) rl1(y) r1(y) wl1(x) wl2(x) ...
no podem mais obter
bloqueios.

2PL evita o fenmeno da atualizao perdida:

S2 ir entrar
em deadlock.

T1, ao tentar obter um


bloqueio de escrita sobre o
item x (wl1(x)), ter sua
execuo suspensa e ficar
esperando at que a
transao T2 libere o bloqueio
de leitura (rl2(x)).

Se T2 tambm tentar obter um


bloqueio de escrita sobre o item de
dado x (wl2(x)), T2 ter sua
execuo suspensa e ficar
esperando at que a transao T1
libere o bloqueio de leitura (rl1(x))
anteriormente obtido sobre o item x.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

19

Protocolo de Bloqueio em Duas Fases


(Bsico)

S1 no seria produzida
2PL evita o fenmeno da atualizao perdida:
pelo protocolo 2PL bsico,
S1 = rl1(x) r1(x) u1(x) rl2(x) r2(x) u2(x) rl1(y) r1(y) u1(y) wl1(x) w1(x) u1(x)
pois depois que T1 e T2
liberam o bloqueio sobre o
wl2(x) w2(x) u2(x) c1 c2
O protocolo de bloqueio
item x (u1(x) e u2(x)),
em duas fases no
2PL Bsico
essas transaes entram
garante a ausncia de
na fase de encolhimento e
deadlocks!
no podem mais obter
S2 = rl1(x) r1(x) rl2(x) r2(x) rl1(y) r1(y) wl1(x) wl2(x) ...
bloqueios.

S2 ir entrar
em deadlock.

T1, ao tentar obter um


bloqueio de escrita sobre o
item x (wl1(x)), ter sua
execuo suspensa e ficar
esperando at que a
transao T2 libere o bloqueio
de leitura (rl2(x)).

Se T2 tambm tentar obter um


bloqueio de escrita sobre o item de
dado x (wl2(x)), T2 ter sua
execuo suspensa e ficar
esperando at que a transao T1
libere o bloqueio de leitura (rl1(x))
anteriormente obtido sobre o item x.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

20

Protocolo de Bloqueio em Duas Fases


Preciso (Strict)
O protocolo de bloqueio em duas fases
severo exige, em adio ao bloqueio em
duas fases bsico, que todos os bloqueios de
modo exclusivo tomados por uma transao
sejam mantidos at que a transao seja
efetivada.
Nesse
protocolo,
todos
os
bloqueios
exclusivos so liberados somente aps a
operao
de
commit
ou
abort.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

21

Protocolo de Bloqueio em Duas Fases


Rigoroso
O protocolo de bloqueio em duas fases rigoroso exige que os bloqueios (tanto
compartilhados quanto exclusivos) sejam mantidos at que a transao seja efetivada.
Nesse protocolo as transaes podem ser serializadas na ordem de sua efetivao.
A desvantagem desse protocolo que o grau de concorrncia ainda mais limitado que no
protocolo 2PL Preciso. Alm disso, o protocolo 2PL Rigoroso no evita a ocorrncia de
deadlocks.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

22

Protocolo de Bloqueio em Duas Fases


Conservador
No protocolo 2PL Conservador (ou 2PL Esttico), uma
transao deve bloquear todos os itens de dados que
deseja antes de iniciar qualquer operao.
Caso no seja possvel bloquear todos os itens necessrios
nenhum bloqueio realizado e a transao no inicia sua
execuo.
Se no for possvel fazer todos os bloqueios, a transao
deve esperar e tentar novamente em um momento futuro.
A grande vantagem do protocolo 2PL conservador evitar
a formao de deadlocks, pois quando uma transao
inicia, ela detm todos os bloqueios de que necessita.
O problema desse protocolo que a espera pela aquisio
de todos os bloqueios necessrios pode apresentar um
desempenho invivel na prtica, o que decorre do baixo
grau de concorrncia proporcionado pelo protocolo.
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

23

Tratamento de Impasse (deadlock)


Abordagens para tratar os impasses:
Deteco e Resoluo: No evita a ocorrncia de deadlocks. Assim, detecta a ocorrncia de um
deadlock para, em seguida, usar alguma estratgia para solucionar o impasse.
Tcnicas:
Deteco por Timeout
Grafo de Espera (Wait-For)
Preveno: Utiliza tcnicas que asseguram que uma situao de impasse (deadlock) nunca ir
ocorrer.
Tcnicas:
Bloqueio de Atualizao (Update)
Soluo por Timestamp

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

24

Tratamento de Impasse (deadlock)


Deteco por Timeout
Na Deteco por Timeout, definido um tempo mximo pelo qual uma transao pode
esperar por um bloqueio.
Se o tempo de espera de uma transao Ti for atingido, ento o escalonador supe que a
transao est envolvida em um impasse e aborta a transao.
Essa estratgia apresenta dois problemas principais:
1.
2.

Pode ser que a transao Ti no esteja envolvida em um deadlock.


A situao de impasse no detectada no momento em que ela ocorre. Um deadlock que j
est acontecendo s percebido aps o tempo mximo de esperar ser ultrapassado.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

25

Tratamento de Impasse (deadlock)


Grafo de Espera (Wait-For)
Nessa estratgia de Grafo de Espera o escalonador mantm um grafo onde os ns
representam as transaes e as arestas so construdas da seguinte forma:
Se uma transao Ti est esperando que outra transao Tj libere um bloqueio, ento uma aresta Ti
Tj deve ser inserida no grafo.
Se a incluso da aresta Ti Tj produzir um ciclo no grafo, esto envolvidas em um deadlock.

A soluo para a situao de impasse identificada consiste em abortar a transao mais


recente.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

26

Tratamento de Impasse (deadlock)


Grafo de Espera (Wait-For)
T2 tambm tenta
fazer um bloqueio
T1 = rl1(x) r1(x) rl1(y) r1(y) wl1(x) w1(x) u1(x) u1(y) c1
exclusivo (escrita)
T2 = rl2(x) r2(x) wl2(x) w2(x) u2(x) c2
sobre x, mas deve
S1 = rl1(x) r1(x) rl2(x) r2(x) rl1(y) r1(y) wl1(x) wl2(x) ...
esperar T1
desbloquear x
(T2T1).

Exemplo:

T1 e T2
possuem
bloqueios
compartilhados
(leitura) sobre x.

T1 tenta fazer um
bloqueio exclusivo
(escrita) sobre x, mas
deve esperar T2
desbloquear x
(T1T2).

T1

T2

Grafo wait-for

O escalonador verifica pelo grafo


wait-for que ocorreu um deadlock,
pois h um ciclo, ento aborta a
transao mais recente (T2).

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

27

Tratamento de Impasse (deadlock)


Bloqueio de Atualizao (Update)
A ideia bsica da tcnica de bloqueio de atualizao consiste em utilizar o bloqueio de
atualizao (ou update), que consiste em um bloqueio de leitura com a inteno de
executar uma operao de escrita no futuro.
O objetivo reduzir as converses de bloqueio de leitura para bloqueio de escrita, evitando
a possibilidade de deadlocks.
A operao de bloqueio de atualizao em uma transao Ti representada
por
uli.
A transao T1
continua
sua execuo
normalmente. J a
T1 = ul1(x) r1(x) rl1(y) r1(y) w1(x) u1(x) u1(y) c1
transao T2 s
T2 = ul2(x) r2(x) w2(x) u2(x) c2
continuar sua execuo
S1 = ul1(x) r1(x) ul2(x) rl1(y) r1(y) wl1(x) u1(x) u1(y) c1 r2(x) w2(x)
u2(x) c2
quando
a transao T1
entrar na fase de
A transao T2, ao tentar obter um bloqueio de
encolhimento e liberar o
atualizao sobre o item de dado x (ul2(x)), ficar
bloqueio sobre o item x.
esperando pela transao T1, uma vez que T1 j detm
Logo, a situao de
um bloqueio sobre
o item x (ul1(x)).
impasse no ocorrer.
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

Exemplo:

28

Tratamento de Impasse (deadlock)


Soluo por Timestamp
Timestamp baseia-se na utilizao de marcadores de tempo (timestamps) , representado
por ts(Ti) para uma transao Ti.
O marcador de tempo ir representar a ordem em que as transaes iniciaram suas
execues. Dessa forma:
Se Ti inicia sua execuo antes de Tj ento: ts(Ti) < ts(Tj)
Nesse caso, Ti uma transao mais antiga que Tj.

Quando uma transao Ti solicitar um bloqueio sobre um item de dado j bloqueado por Tj,
duas estratgias so possveis:
wait-die
wound-wait

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

29

Tratamento de Impasse (deadlock)


Soluo por Timestamp
Wait-die:
Se ts(Ti) < ts(Tj) ento
//Ti mais antiga que Tj
Ti espera
Seno //Ti mais recente que Tj
Abortar Ti //Transao mais recente abortada
Fim-Se

Se a transao for mais antiga, ela pode esperar por uma transao mais nova.
J as transaes mais novas no esperam por uma transao mais antiga, sendo
canceladas.
medida que uma transao fica mais antiga, ela tende a esperar pelas transaes mais
jovens.
BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

30

Tratamento de Impasse (deadlock)


Soluo por Timestamp
Exemplo wait-die:
Considere as seguintes transaes e seus marcadores de tempo:
T1 = rl1(x) r1(x) rl1(y) r1(y) wl1(x) w1(x) u1(x) u1(y) c1
ts(T1) = 1
T2 = rl2(x) r2(x) wl2(x) w2(x) u2(x) c2
ts(T2) = 2
O seguinte escalonamento ser gerado utilizando a tcnica wait-die:
S1 = rl1(x) r1(x) rl2(x) r2(x) rl1(y) r1(y) wl1(x) wl2(x) a2 w1(x) u1(x) u1(y) c1 rl2(x) r2(x) wl2(x)
w2(x) u2(x) c2
As
transaes
T1 e T2
fazem
bloqueios
para leitura
sobre o item
x (rl1(x) e
rl2(x)).

A transao T1 solicita um
bloqueio de escrita sobre o
item x (wl1(x)), entretanto,
x j est bloqueado por T2
(rl2(x)). Como ts(T1) <
ts(T2), ento T1 ir esperar
at que T2 libere o seu
bloqueio sobre x.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

A transao T2 solicita
um
bloqueio de escrita sobre
o item x (wl2(x)),
entretanto, x j est
bloqueado por T1
(rl1(x)). Como ts(T2) >
ts(T1), ento T2 ser
cancelada (abortada).

31

Tratamento de Impasse (deadlock)


Soluo por Timestamp
Wound-wait:
Se ts(Ti) < ts(Tj) ento
//Ti mais antiga que Tj
Abortar Tj //Transao mais recente abortada
Seno //Ti mais recente que Tj
Ti espera
Fim-Se

Se uma transao for mais nova, ela pode esperar por uma transao mais antiga.
J as transaes mais antigas no esperam por uma transao mais nova, nesse caso, as
transaes mais antigas provocam o abort das transaes mais jovens.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

32

Tratamento de Impasse (deadlock)


Soluo por Timestamp
Exemplo (wound-wait):
Considere as seguintes transaes e seus marcadores de tempo:
T1 = rl1(x) r1(x) rl1(y) r1(y) wl1(x) w1(x) u1(x) u1(y) c1
ts(T1) = 1
T2 = rl2(x) r2(x) wl2(x) w2(x) u2(x) c2
ts(T2) = 2
O seguinte escalonamento ser gerado utilizando a tcnica wound-wait :
S1 = rl1(x) r1(x) rl2(x) r2(x) rl1(y) r1(y) wl1(x) a2 w1(x) u1(x) u1(y) c1 rl2(x) r2(x) wl2(x) w2(x)
u2(x) c2
As transaes
T1 e T2 fazem
bloqueios
para leitura
sobre o item x
(rl1(x) e
rl2(x)).

A transao T1 solicita um
bloqueio de escrita sobre o
item x (wl1(x)), entretanto,
x j est bloqueado por T2
(rl2(x)). Como ts(T1) <
ts(T2), ento T2 ser
cancela (abortada).

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

33

Bloqueio em Duas Fases com Mltiplas


Verses
A ideia principal dos protocolos baseados em mltiplas verses (two version two phase lock
2V2PL) consiste em reduzir a taxa de bloqueios atravs da utilizao de mais de uma
verso de cada item de dado.
Para assegurar a gerao de escalonamentos (schedules) precisos, os bloqueios s so
liberados aps a operao de commit.
O protocolo 2V2PL produz escalonamentos (schedules) serializveis por conflito e precisos.
Esse protocolo apresenta um grau de paralelismo maior, uma vez que um mesmo item pode
ser lido e escrito por transaes diferentes de forma simultnea.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

34

Protocolos Baseados em Marcadores


de Tempo
No protocolo de ordenao por marca de tempo (timestamp), o gerenciador de transaes
(GT) atribui um timestamp, ts(Ti), a cada transao Ti. O gerenciador de transaes associa
o timestamp da transao Ti a todas as operaes pi(x) Ti.
Um escalonador, baseado na ordenao por timestamp, ordena as operaes em conflito de
acordo com os seus timestamps, segundo a regra mostrada a seguir:
Se pi(x) e qj(x) so operaes em conflito, ento a operao pi(x) ser executada antes da operao
qj(x) se e somente se ts(Ti) < ts(Tj).

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

35

Teste do Grafo de Serializao


O grafo de serializao de um schedule um grafo direcionado, onde cada transao um
vrtice do grafo e as operaes em conflito so as arestas que conectam os vrtices
(transaes).
O protocolo do teste do grafo de serializao baseia-se no monitoramento e gerenciamento
do grafo de serializao que deve ser acclico, uma vez que se esse grafo for acclico o
schedule gerado serializvel por conflito.

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

36

Teste do Grafo de Serializao


Exemplo 01:

Exemplo 02:

T1 = r1(x) r1(y) w1(x) c1


T2 = r2(x) r2(y) c2
S1 = r1(x) r2(x) r1(y) w1(x) r2(y) c2 c1
r2(x) e w1(x)
so operaes
em conflito.

T1

T2

Grafo de Serializao

T1 = r1(x) w1(x) c1
T2 = r2(x) w2(x) c2
S2 = r1(x) r2(x) w1(x) w2(x) c1 c2
r1(x) e w2(x)
so operaes
em conflito.

O schedule
gerado
serializvel por
conflito.

T1

T2

Grafo de Serializao

BANCOS DE DADOS: CONTROLE DE CONCORRNCIA

r2(x) e w1(x)
so operaes
em conflito.
O schedule
gerado no
serializvel por
conflito.
37

Você também pode gostar