Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
Deteco e Resoluo
Preveno
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
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
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.
Nesse protocolo, para uma transao Ti liberar o bloqueio que possui sobre uma x, o
escalonador deve executar uma operao ui(x).
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.
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
10
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.
11
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
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.
13
14
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
16
2.
17
18
S2 ir entrar
em deadlock.
19
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.
20
21
22
23
24
25
26
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
27
Exemplo:
28
Quando uma transao Ti solicitar um bloqueio sobre um item de dado j bloqueado por Tj,
duas estratgias so possveis:
wait-die
wound-wait
29
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
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.
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
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.
32
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).
33
34
35
36
Exemplo 02:
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
r2(x) e w1(x)
so operaes
em conflito.
O schedule
gerado no
serializvel por
conflito.
37