Você está na página 1de 7

123

Controle Controle de de Concorrncia Concorrncia


Protocolos Protocolos de de Bloqueio Bloqueio
Protocolo Protocolo com base com base em em Timestamps Timestamps
Protocolos Protocolos Multi Multi- -verso verso
Controle de Controle de Deadlock Deadlock
Inser Inser o e Remo o e Remo o de Dados o de Dados
Concorrncia em Concorrncia em BDs BDs Distribu Distribu dos dos
124
Controle Controle de de Concorrncia Concorrncia
Controle Controle de de concorrncia concorrncia usado usado para para garantir garantir a a
consistncia consistncia e o e o isolamento isolamento de de transaes transaes
Protocolos Protocolos de de controle controle de de concorrncia concorrncia garantem garantem
a a serializao serializao no no processamento processamento de de transaes transaes
Protocolos Protocolos de de bloqueio bloqueio: : controlam controlam o o acesso acesso ao ao BD, BD,
bloqueando bloqueando os os dados dados que que esto esto sendo sendo usados usados
Protocolos Protocolos com base com base em em timestamps timestamps: : associam associam
marcas marcas de tempo de tempo s s operaes operaes de de leitura leitura e e escrita escrita
Protocolos Protocolos de de validao validao: : efetuam efetuam testes de testes de validao validao
dos dados antes dos dados antes das das operaes operaes de de escrita escrita
125
Protocolos Protocolos de de Bloqueio Bloqueio
Impedem Impedem que que um dado um dado seja seja modificado modificado
enquanto enquanto uma uma transao transao o o estiver estiver acessando acessando
Modos Modos de de Bloqueio Bloqueio
Compartilhado Compartilhado (S): (S): permite permite somente somente leitura leitura; ; obtido obtido
sempre sempre que que no no houver houver nenhum nenhum bloqueio bloqueio exclusivo exclusivo
Exclusivo Exclusivo (X): (X): permite permite leitura leitura e e escrita escrita; ; obtido obtido
somente somente se se no no houver houver nenhum nenhum outro outro bloqueio bloqueio
Todas Todas as as transaes transaes devem devem: :
Solicitar Solicitar o o bloqueio bloqueio compartilhado compartilhado ( (para para leitura leitura) ) ou ou
exclusivo exclusivo ( (para para escrita escrita) antes de ) antes de acessar acessar um dado um dado
Autorizao Autorizao vai vai depender depender dos dos bloqueios bloqueios existentes existentes
Liberar Liberar o o bloqueio bloqueio quando quando no no for for mais mais necessrio necessrio
126
Protocolos Protocolos de de Bloqueio Bloqueio
Operaes Operaes de de Bloqueio Bloqueio
Resultado Resultado das das Operaes Operaes
Transaes Transaes em em espera espera ganham ganham direito direito de de acesso acesso
quando quando o dado o dado bloqueado bloqueado for for liberado liberado
unlock(dado)
lock-X(dado)
lock-S(dado)
Operao Operao Ao Ao
Libera o bloqueio existente
Solicita bloqueio exclusivo do dado
Solicita bloqueio compartilhado do dado
Se n=1: Livre
Se n1: S; n--
Espera
S; n++
Estado Estado: S : S
Espera S; n=1 lock-S(dado)
Livre Ignora unlock(dado)
Espera X lock-X(dado)
Estado Estado: X : X Estado Estado: : Livre Livre Operao Operao
127
Protocolos Protocolos de de Bloqueio Bloqueio
Exemplo Exemplo: : suponha suponha as as transaes transaes T T
1 1
e T e T
2 2
T T
11
: : Read Read ( (Aplic Aplic); );
Aplic Aplic.Saldo = .Saldo = Aplic Aplic.Saldo .Saldo 5 500; 00;
Write Write ( (Aplic Aplic); );
Read Read ( (Conta Conta); );
Conta.Saldo = Conta.Saldo Conta.Saldo = Conta.Saldo + + 5 500; 00;
Write Write ( (Conta Conta); );
T T
22
: : Read Read ( (Conta Conta); );
Read Read ( (Aplic Aplic); );
Print ( Print (Conta.Saldo Conta.Saldo + + Aplic Aplic.Saldo .Saldo) ); ;
Operaes Operaes de de bloqueio bloqueio devem devem ser ser adicionadas adicionadas ao ao
cdigo cdigo para para garantir garantir o o isolamento isolamento entre entre as as transaes transaes
128
Protocolos Protocolos de de Bloqueio Bloqueio
Bloqueio Bloqueio s s no no acesso acesso no no garante garante isolamento isolamento: :
T T
22
T T
11
Lock-X (Conta);
Read (Conta);
Conta.Saldo = Conta.Saldo + 500;
Write (Conta);
Unlock (Conta);
Lock-X (Aplic);
Read (Aplic);
Aplic.Saldo = Aplic.Saldo 500;
Write (Aplic);
Unlock (Aplic);
Lock-S (Aplic);
Read (Aplic);
Unlock (Aplic);
Print (Conta.Saldo + Aplic.Saldo);
Lock-S (Conta);
Read (Conta);
Unlock (Conta);
129
Protocolos Protocolos de de Bloqueio Bloqueio
Bloqueio Bloqueio pode pode causar causar inanio inanio ( (starvation starvation) )
T T
22
nunca nunca recebe recebe o o direiro direiro de de acesso acesso! !
Pode Pode ser ser evitado evitado fazendo fazendo que que o o direito direito de de acesso acesso
compartilhado compartilhado no no seja seja concedido concedido se se houver houver uma uma
transao transao esperando esperando por por bloqueio bloqueio exclusivo exclusivo
lock-S(Q) bloqueada
lock-S(Q) bloqueada
lock-S(Q) bloqueada
lock-X(Q)
lock-S(Q)
T T
55
T T
44
T T
33
T T
22
T T
11
130
Protocolos Protocolos de de Bloqueio Bloqueio
Protocolo Protocolo de de Bloqueio Bloqueio em em Duas Duas Fases Fases (2PL) (2PL)
Primeira Primeira fase fase: : Fase Fase de de expanso expanso
Pode Pode bloquear bloquear dados dados
No No pode pode liberar liberar os os bloqueios bloqueios obtidos obtidos
Segunda Segunda fase fase: : Fase Fase de de recolhimento recolhimento
Pode Pode liberar liberar os os dados dados bloqueados bloqueados anteriormente anteriormente
No No pode pode mais mais bloquear bloquear dados dados
Garante Garante escala escala de de execuo execuo serializvel serializvel em em conflito conflito
Precedncia Precedncia determinada determinada em em funo funo do do instante instante de de
obteno obteno do do ltimo ltimo bloqueio bloqueio
No No evita evita rollback rollback em em cascata cascata
131
Protocolos Protocolos de de Bloqueio Bloqueio
Bloqueio Bloqueio em em Duas Duas Fases Fases Exemplo Exemplo: :
Bloqueada
Conta.Saldo = Conta.Saldo + 500;
Write (Conta);
Unlock (Conta);
T T
22
T T
11
Lock-X (Aplic);
Read (Aplic);
Aplic.Saldo = Aplic.Saldo 500;
Write (Aplic);
Lock-X (Conta);
Unlock (Aplic); // Inicia 2
a
fase
Read (Conta);
Read (Conta);
Lock-S (Aplic);
Unlock (Conta); // Inicia 2
a
fase
Read (Aplic);
Print (Conta.Saldo + Aplic.Saldo);
Unlock (Aplic);
Lock-S (Conta);
132
Protocolos Protocolos de de Bloqueio Bloqueio
Bloqueio Bloqueio em em duas duas fases fases pode pode causar causar deadlock deadlock: :
Bloqueada Bloqueada
Bloqueada
Write (Aplic);
Lock-X (Conta);
T T
22
T T
11
No executa:
Unlock (Aplic);
Read (Conta);
Conta.Saldo = Conta.Saldo + 500;
Write (Conta);
Unlock (Conta);
Lock-X (Aplic);
Read (Aplic);
Aplic.Saldo = Aplic.Saldo 500;
No executa:
Unlock (Conta);
Read (Aplic);
Print (Conta.Saldo + Aplic.Saldo);
Unlock (Aplic);
Lock-S (Conta);
Read (Conta);
Lock-S (Aplic);
133
Protocolos Protocolos de de Bloqueio Bloqueio
Bloq Bloq. . em em 2 2 fases fases no no evita evita rollback rollback em em cascata cascata
Bloqueada
Conta.Saldo = Conta.Saldo + 500;
Write (Conta); // ABORTA
Unlock(Conta);
T T
22
T T
11
Lock-X (Aplic);
Read (Aplic);
Aplic.Saldo = Aplic.Saldo 500;
Write (Aplic);
Lock-X (Conta);
Unlock (Aplic);
Read (Conta);
Read (Conta); // ABORTA
Unlock (Conta);
Print (Conta.Saldo + Aplic.Saldo);
Unlock (Aplic);
Lock-S (Aplic);
Read (Aplic);
Lock-S (Conta);
134
Protocolos Protocolos de de Bloqueio Bloqueio
Variantes Variantes do do Bloqueio Bloqueio em em Duas Duas Fases Fases
Evitam Evitam o o rollback rollback em em cascata cascata
Usados Usados pela pela maioria maioria dos dos SGBDs SGBDs
Protocolo Protocolo de de Bloqueio Bloqueio em em Duas Duas Fases Fases Severo Severo
Obriga Obriga que que os os bloqueios bloqueios exclusivos exclusivos sejam sejam
mantidos mantidos at at a a efetivao efetivao da da transao transao
Protocolo Protocolo de de Bloqueio Bloqueio em em Duas Duas Fases Fases Rigoroso Rigoroso
Obriga Obriga que que todos todos os os bloqueios bloqueios ( (compartilhados compartilhados e e
exclusivos exclusivos) ) sejam sejam mantidos mantidos at at o o commit commit
135
Protocolos Protocolos de de Bloqueio Bloqueio
Bloqueio Bloqueio em em Duas Duas Fases Fases Severo Severo Exemplo Exemplo: :
Bloqueada
Conta.Saldo = Conta.Saldo + 500;
Write (Conta);
Unlock (Aplic);
Unlock(Conta);
T T
22
T T
11
Lock-X (Aplic);
Read (Aplic);
Aplic.Saldo = Aplic.Saldo 500;
Write (Aplic);
Lock-X (Conta);
Read (Conta);
Read (Aplic);
Lock-S (Conta);
Unlock (Aplic);
Read (Conta);
Print (Conta.Saldo + Aplic.Saldo);
Unlock (Conta);
Lock-S (Aplic);
136
Protocolos Protocolos de de Bloqueio Bloqueio
Bloqueio Bloqueio em em Duas Duas Fases Fases Rigoroso Rigoroso Exemplo Exemplo: :
Bloqueada
Conta.Saldo = Conta.Saldo + 500;
Write (Conta);
Unlock (Aplic);
Unlock(Conta);
T T
22
T T
11
Lock-X (Aplic);
Read (Aplic);
Aplic.Saldo = Aplic.Saldo 500;
Write (Aplic);
Lock-X (Conta);
Read (Conta);
Read (Aplic);
Lock-S (Conta);
Read (Conta);
Print (Conta.Saldo + Aplic.Saldo);
Unlock (Aplic);
Unlock (Conta);
Lock-S (Aplic);
137
Protocolos Protocolos de de Bloqueio Bloqueio
Protocolos Protocolos com com Converso Converso de de Bloqueios Bloqueios
Utilizam Utilizam instrues instrues de de converso converso de de bloqueios bloqueios para para
alternar alternar entre entre modos modos de de bloqueio bloqueio diferentes diferentes
Upgrade(Q Upgrade(Q): ): bloqueio bloqueio compartilhado compartilhado exclusivo exclusivo
Downgrade(Q Downgrade(Q): ): bloqueio bloqueio exclusivo exclusivo compartilhado compartilhado
Lock-S Lock-X
Downgrade
Upgrade
138
Protocolos Protocolos de de Bloqueio Bloqueio
Modos de Bloqueio Intencional Modos de Bloqueio Intencional
Propiciam maior paralelismo entre transaes Propiciam maior paralelismo entre transaes
Inteno de compartilhamento (IS): indica que um Inteno de compartilhamento (IS): indica que um
bloqueio compartilhado poder ser solicitado bloqueio compartilhado poder ser solicitado
Inteno de exclusividade (IX): indica que um Inteno de exclusividade (IX): indica que um
bloqueio exclusivo poder ser solicitado bloqueio exclusivo poder ser solicitado
Compartilhado com inteno de exclusividade (SIX): Compartilhado com inteno de exclusividade (SIX):
indica que h bloqueio indica que h bloqueio
compartilhado ativo, compartilhado ativo,
mas que um bloqueio mas que um bloqueio
exclusivo pode vir a exclusivo pode vir a
ser solicitado ser solicitado
false false false false false X X
false false false false true SIX SIX
false false true false true S S
false false false true true IX IX
false true true true true IS IS
X X SIX SIX S S IX IX IS IS
139
Protocolos Protocolos de de Bloqueio Bloqueio
Protocolos Protocolos de de Bloqueio Bloqueio baseados baseados em em Grafos Grafos
Determinam Determinam uma uma ordenao ordenao parcial parcial no no acesso acesso aos aos
dados dados usando usando um um grafo grafo de de precedncia precedncia
Supondo Supondo que que exista exista a a relao relao de de precedncia precedncia A A B B
no no grafo grafo, , qualquer qualquer transao transao que que acesse acesse A e B, A e B, deve deve
acessar acessar primeiro primeiro A e A e depois depois B B
A A ordenao ordenao pode pode ser ser baseada baseada na na organizao organizao fsica fsica
ou ou lgica lgica dos dados, dos dados, ou ou pode pode ser ser imposta imposta de de modo modo
aleatrio aleatrio somente somente para para controlar controlar a a concorrncia concorrncia
Existem Existem vrios vrios protocolos protocolos baseados baseados em em grafos grafos; um ; um
dos dos mais mais simples o simples o protocolo protocolo de de grafo grafo em em rvore rvore
140
Protocolos Protocolos de de Bloqueio Bloqueio
Protocolo Protocolo de de Grafo Grafo em em rvore rvore
Bloqueios Bloqueios so so todos todos exclusivos exclusivos
Primeiro Primeiro bloqueio bloqueio pode pode ser ser em em
qualquer qualquer dado dado
Os Os bloqueios bloqueios seguintes seguintes podem podem
ocorrer ocorrer somente somente se o dado se o dado
precedente precedente estiver estiver bloqueado bloqueado
Dados Dados podem podem ser ser desbloqueados desbloqueados a a qualquer qualquer instante instante
Bloqueio Bloqueio mais mais curto curto que que no no protocolo protocolo de 2 de 2 fases fases
Garante Garante serializao serializao de de conflito conflito e e evita evita deadlock deadlock
Pode Pode bloquear bloquear mais mais dados do dados do que que reamente reamente precisa precisa
Escalas Escalas serializveis serializveis por por este este protocolo protocolo podem podem no no o o
ser com ser com bloqueio bloqueio em em 2 2 fases fases, e vice , e vice- -versa versa
A
B C
D E F
G H
141
Protocolos Protocolos de de Bloqueio Bloqueio
Granularidade Granularidade Mltipla Mltipla
Ao invs de bloquear um item de dados, podemos Ao invs de bloquear um item de dados, podemos
bloquear bloquear tuplas tuplas, tabelas, blocos de disco ou , tabelas, blocos de disco ou BDs BDs
Podemos usar rvores para selecionar Podemos usar rvores para selecionar
a a granularidade granularidade do bloqueio do bloqueio
Cada n da rvore pode ser Cada n da rvore pode ser
bloqueado individualmente bloqueado individualmente
Cada nvel corresponde Cada nvel corresponde
a uma a uma granularidade granularidade
de bloqueio de bloqueio
BD
R
1 R
2
B
1
B
n
t
x+1
t
n
t
1
t
x ... ...
... B
1
t
1
t
n ...
142
Protocolos Protocolos com base com base em em Timestamps Timestamps
Usam Usam timestamps timestamps (marcas de tempo) (marcas de tempo)
associados s transaes e aos dados para associados s transaes e aos dados para
ordenar as operaes de leitura e escrita ordenar as operaes de leitura e escrita
Cada Cada transao transao T T ganha ganha um um timestamp timestamp TS TS ao ao iniciar iniciar, ,
com base no com base no relgio relgio do do sistema sistema ou ou em em um um contador contador
Dois Dois timestamps timestamps so so associados associados a a cada cada dado dado
W W- -TS: TS: indica indica a a transao transao de de maior maior timestamp timestamp que que
alterou alterou o valor do dado o valor do dado
R R- -TS: TS: indica indica a a transao transao e e maior maior timestamp timestamp que que
leu leu o valor do dado o valor do dado
143
Protocolos Protocolos com base com base em em Timestamps Timestamps
Ordenao Ordenao de de operaes operaes por por timestamps timestamps
No No caso caso da da transao transao T T querer querer ler ler um dado Q um dado Q
Se TS(T) < W Se TS(T) < W- -TS(Q): TS(Q): T T abortada abortada e e desfeita desfeita
(T (T quer quer ler ler um dado um dado que que j j foi foi sobrescrito sobrescrito) )
Se TS(T) Se TS(T) W W- -TS(Q): a TS(Q): a operao operao executada executada; ;
se R se R- -TS(Q) < TS(T), TS(Q) < TS(T), ento ento R R- -TS(Q) = TS(T) TS(Q) = TS(T)
No No caso caso da da transao transao T T querer querer alterar alterar um dado Q um dado Q
Se TS(T) < R Se TS(T) < R- -TS(Q): TS(Q): T T abortada abortada e e desfeita desfeita
(T (T no no pode pode alterar alterar um valor um valor que que j j foi foi lido) lido)
Se TS(T) Se TS(T) < < W W- -TS(Q): TS(Q): T T abortada abortada e e desfeita desfeita
(T (T est est tentando tentando escrever escrever um valor um valor obsoleto obsoleto) )
Seno Seno, a , a operao operao executada executada; W ; W- -TS(Q) = TS(T) TS(Q) = TS(T)
144
Protocolos Protocolos com base com base em em Timestamps Timestamps
Exemplo Exemplo de de escala escala ordenada ordenada por por timestamps timestamps
Read (Conta);
Read (Aplic);
Print (Conta.Saldo +
Aplic.Saldo);
T T
22
R-TS(Conta) = 2
TS(T
1
) < R-TS(Conta)
T
1
e T
2
abortadas
Read (Conta);
Conta.Saldo += 500;
Write (Conta);
Timestamps Timestamps T T
11
Read (Aplic);
Aplic.Saldo = 500
Write (Aplic);
TS(T
2
) = 2
R-TS(Conta) = 2
R-TS(Aplic) = 2
TS(T
1
) = 1
R-TS(Aplic) = 1
W-TS(Aplic) = 1
145
Protocolos Protocolos com base com base em em Timestamps Timestamps
Caractersticas Caractersticas da da ordenao ordenao por por timestamps timestamps
Evita Evita deadlocks deadlocks e e garante garante a a serializao serializao de de conflito conflito
na na ordem ordem dos dos timestamps timestamps
No No impede a impede a cascata cascata nem nem garante garante a a recuperao recuperao
Regra de Escrita de Thomas Regra de Escrita de Thomas
Se a transao T tentar alterar um dado Q, e Se a transao T tentar alterar um dado Q, e TS(T) TS(T)
for for menor menor que que W W- -TS(Q), n TS(Q), no o preciso abortar a preciso abortar a
transao; basta ignorar a operao de escrita transao; basta ignorar a operao de escrita
Garante a Garante a serializao serializao de viso de viso
Aumenta a concorrncia entre transaes Aumenta a concorrncia entre transaes
146
Protocolos Protocolos Multi Multi- -Verso Verso
Permitem que um dado tenha vrios valores Permitem que um dado tenha vrios valores
Operaes de escrita criam novas verses do dado Operaes de escrita criam novas verses do dado
Quando feita a leitura, o SGBD escolhe a verso do Quando feita a leitura, o SGBD escolhe a verso do
dado que ser lida de modo a garantir a dado que ser lida de modo a garantir a serializao serializao
Operaes de leitura no precisam aguardar, pois Operaes de leitura no precisam aguardar, pois
sempre h uma verso do dado pronta para ser lida sempre h uma verso do dado pronta para ser lida
Protocolo determina como as verses so usadas Protocolo determina como as verses so usadas
Protocolos com base em mltiplas verses Protocolos com base em mltiplas verses
Multi Multi- -verso verso com ordenao por com ordenao por timestamps timestamps
Multi Multi- -verso verso com bloqueio em duas fases com bloqueio em duas fases
Garantem a criao de escalas Garantem a criao de escalas serializveis serializveis
147
Protocolos Protocolos Multi Multi- -Verso Verso
Multi Multi- -verso verso com Ordenao por com Ordenao por Timestamps Timestamps
Cada verso do dado possui Cada verso do dado possui timestamps timestamps de leitura de leitura
(R (R- -TS) e escrita (W TS) e escrita (W- -TS), alm do valor do dado TS), alm do valor do dado
Uma transao T sempre acessa a verso Uma transao T sempre acessa a verso Q Q
kk
do dado do dado
com o maior W com o maior W- -TS que seja menor ou igual a TS(T) TS que seja menor ou igual a TS(T)
A transao T sempre l a verso A transao T sempre l a verso Q Q
kk
Ao escrever, T desfeita se TS(T) < R Ao escrever, T desfeita se TS(T) < R- -TS( TS(Q Q
kk
); );
seno, se TS(T) = W seno, se TS(T) = W- -TS( TS(Q Q
kk
), o valor de ), o valor de Q Q
kk
alterado; alterado;
caso contrrio, uma nova verso de Q criada caso contrrio, uma nova verso de Q criada
Verses antigas, com W Verses antigas, com W- -TS( TS(Q Q
kk
) < TS(T), sendo T a ) < TS(T), sendo T a
ltima transao executada, podem ser removidas ltima transao executada, podem ser removidas
148
Protocolos Protocolos Multi Multi- -Verso Verso
Exemplo Exemplo de de escala escala multi multi- -verso verso com com timestamps timestamps
Read (Conta);
Read (Aplic);
Print (Conta.Saldo +
Aplic.Saldo);
T T
22
R-TS(Conta
1
) = 2
R-TS(Conta
1
) > TS(T
1
)
T
1
e T
2
abortadas
Read (Conta);
Conta.Saldo += 500;
Write (Conta);
Timestamps Timestamps T T
11
Read (Aplic);
Aplic.Saldo = 500
Write (Aplic);
TS(T
2
) = 2
R-TS(Conta
1
) = 2
R-TS(Aplic
2
) = 2
TS(T
1
) = 1
R-TS(Aplic
1
) = 1
W-TS(Aplic
2
) = 1
149
Protocolos Protocolos Multi Multi- -Verso Verso
Multi Multi- -verso verso com Bloqueio em Duas Fases com Bloqueio em Duas Fases
Usa Usa timestamps timestamps e contador de e contador de commits commits ( (ts ts- -counter counter) )
Distingue transaes de atualizao e somente Distingue transaes de atualizao e somente- -leitura leitura
Transao de atualizao ( Transao de atualizao (update update) )
Faz o bloqueio em duas fases Faz o bloqueio em duas fases
C Cada ada write write cria cria uma uma nova nova verso verso Q Q
kk
do dado com do dado com
TS(Q TS(Q
kk
) = ) = ts ts- -counter counter quando quando faz faz o o commit commit
Transao Transao somente somente- -leitura leitura ( (read read- -only only) )
No precisa manter bloqueios at o final No precisa manter bloqueios at o final
TS(T) = TS(T) = ts ts- -counter counter no momento que ela se inicia no momento que ela se inicia
L a verso do dado com o maior TS( L a verso do dado com o maior TS(Q Q
kk
) ) TS(T) TS(T)
150
Protocolos Protocolos Multi Multi- -Verso Verso
Exemplo Exemplo de multi de multi- -verso verso c/ c/ bloqueio bloqueio em em 2 2 fases fases
Lock-S (Aplic);
Read (Aplic);
Print (Conta+Aplic);
Unlock (Aplic);
Lock-S (Conta);
Read (Conta);
Unlock (Conta);
T T
22
L Aplic
1
= 1000
L Conta
1
= 1000
Cria Conta
2
= 1500
TS(Conta
2
) = TS(Aplic
2
)
= ts-counter = 2
Lock-X (Conta);
Read (Conta);
Conta.Saldo += 500;
Write (Conta);
Unlock (Conta);
Unlock (Aplic);
Timestamps Timestamps T T
11
Lock-X (Aplic);
Read (Aplic);
Aplic.Saldo = 500
Write (Aplic);
TS(T
2
) = ts-counter = 1
L Conta
1
= 1000
TS(T
1
) = ts-counter = 1
L Aplic
1
= 1000
Cria Aplic
2
= 500
151
Controle de Controle de Deadlock Deadlock
Deadlock Deadlock ocorre quando temos um conjunto de ocorre quando temos um conjunto de
transaes no qual todas esto em espera, uma transaes no qual todas esto em espera, uma
aguardando o trmino da outra para prosseguir aguardando o trmino da outra para prosseguir
Bloqueada Bloqueada
Deadlock!
Bloqueada
Write (A);
Lock-X (B);
T T
22
T T
11
Lock-X (A);
Read (A);
Lock-S (B);
Read (B);
Lock-S (A);
152
Controle de Controle de Deadlock Deadlock
Tcnicas para Controle de Tcnicas para Controle de Deadlock Deadlock
Preveno de Preveno de deadlock deadlock
Evita os Evita os deadlocks deadlocks antes que estes ocorram antes que estes ocorram
Prefervel se a probabilidade de ocorrerem Prefervel se a probabilidade de ocorrerem
deadlocks deadlocks for muito alta for muito alta
Deteco e recuperao de Deteco e recuperao de deadlock deadlock
No evita os No evita os deadlocks deadlocks, mas os detecta e impede , mas os detecta e impede
o bloqueio indefinido das transaes envolvidas o bloqueio indefinido das transaes envolvidas
Mais eficiente se ocorrerem poucos Mais eficiente se ocorrerem poucos deadlocks deadlocks
Rollback Rollback pode ser necessrio independentemente da pode ser necessrio independentemente da
tcnica utilizada tcnica utilizada
153
Controle de Controle de Deadlock Deadlock
Preveno de Preveno de Deadlock Deadlock
Usurio deve sempre acessar dados na mesma ordem Usurio deve sempre acessar dados na mesma ordem
Estratgias de preveno usadas por Estratgias de preveno usadas por SGBDs SGBDs
Esperar Esperar- -morrer: T morrer: T
ii
s espera um dado mantido por s espera um dado mantido por
T T
jj
se esta for mais nova; caso contrrio T se esta for mais nova; caso contrrio T
ii
aborta aborta
Ferir Ferir- -esperar: T esperar: T
ii
somente espera um dado mantido somente espera um dado mantido
por T por T
jj
se esta for mais antiga; caso contrrio ela se esta for mais antiga; caso contrrio ela
obriga T obriga T
jj
a abortar e liberar o dado (T a abortar e liberar o dado (T
ii
fere T fere T
jj
) )
Timeout Timeout: pedido de bloqueio possui um tempo : pedido de bloqueio possui um tempo
mximo de espera; se o dado no for liberado mximo de espera; se o dado no for liberado
neste tempo, a transao abortada e reiniciada neste tempo, a transao abortada e reiniciada
154
Controle de Controle de Deadlock Deadlock
Deteco de Deteco de Deadlock Deadlock
Algoritmo verifica estado do sistema periodicamente Algoritmo verifica estado do sistema periodicamente
para determinar se transaes esto em para determinar se transaes esto em deadlock deadlock
O sistema precisa manter informaes sobre a O sistema precisa manter informaes sobre a
alocao dos dados e as solicitaes pendentes alocao dos dados e as solicitaes pendentes
Deadlocks Deadlocks podem ser detectados usando grafos de podem ser detectados usando grafos de
espera, nos quais um ciclo indica um espera, nos quais um ciclo indica um deadlock deadlock
Grafo sem ciclo Grafo sem ciclo Grafo com ciclo Grafo com ciclo
T
4
T
5
T
6
T
1
T
2
T
3
155
Controle de Controle de Deadlock Deadlock
Recuperao de Recuperao de Deadlock Deadlock
Aps detectar o Aps detectar o deadlock deadlock, precisamos abortar uma , precisamos abortar uma
transao para quebrar o ciclo de espera transao para quebrar o ciclo de espera
Devemos escolher a transao em funo do custo Devemos escolher a transao em funo do custo
do do rollback rollback, determinado em funo do: , determinado em funo do:
Tempo que a transao est em processamento Tempo que a transao est em processamento
Tempo necessrio para concluso da transao Tempo necessrio para concluso da transao
Nmero de acessos a dados j efetuados Nmero de acessos a dados j efetuados
Nmero de acessos a dados que faltam p/ concluir Nmero de acessos a dados que faltam p/ concluir
Nmero de transaes a recuperar em cascata Nmero de transaes a recuperar em cascata
Nmero de abortos sofridos (para evitar inanio) Nmero de abortos sofridos (para evitar inanio)
etc. etc.
156
Insero e Remoo de Dados Insero e Remoo de Dados
Operaes de insero e remoo devem ser Operaes de insero e remoo devem ser
consideradas no controle de concorrncia, pois consideradas no controle de concorrncia, pois
so conflitantes com qualquer outra operao so conflitantes com qualquer outra operao
Protocolo de Bloqueio em Duas Fases Protocolo de Bloqueio em Duas Fases
Devemos bloquear o dado em modo exclusivo para Devemos bloquear o dado em modo exclusivo para
inserir ou remover inserir ou remover
Protocolo com base em Protocolo com base em Timestamps Timestamps
Devemos Devemos inicializar inicializar W W- -TS(Q) e R TS(Q) e R- -TS(Q) com o TS(Q) com o
timestamp timestamp da transao que insere o dado Q da transao que insere o dado Q
Devemos fazer o teste para operaes que alteram o Devemos fazer o teste para operaes que alteram o
valor do dado no momento da remoo valor do dado no momento da remoo
157
Insero e Remoo de Dados Insero e Remoo de Dados
Tuplas Tuplas Fantasma Fantasma
As transaes abaixo no so conflitantes se fizermos As transaes abaixo no so conflitantes se fizermos
controle de concorrncia por controle de concorrncia por tupla tupla, mas entram em , mas entram em
conflito se forem executadas concorrentemente conflito se forem executadas concorrentemente
select select sum sum(saldo) (saldo) insert insert into into contas contas
from from contas contas values values(123,Joo,50.00) (123,Joo,50.00)
Solues possveis Solues possveis
Bloquear toda a relao Bloquear toda a relao pouca concorrncia pouca concorrncia
Bloquear um campo especial que indica que uma Bloquear um campo especial que indica que uma
transao est inserindo ou removendo dados transao est inserindo ou removendo dados
Bloquear o ndice da relao Bloquear o ndice da relao
158
Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos
Controle de concorrncia essencial em Controle de concorrncia essencial em BDDs BDDs
preciso garantir a consistncia e o isolamento, preciso garantir a consistncia e o isolamento,
apesar da fragmentao e da replicao dos dados apesar da fragmentao e da replicao dos dados
Devemos evitar Devemos evitar deadlocks deadlocks distribudos, que so ainda distribudos, que so ainda
mais difceis de detectar e recuperar mais difceis de detectar e recuperar
Os protocolos de controle de concorrncia so Os protocolos de controle de concorrncia so
modificados para trabalhar em modificados para trabalhar em BDs BDs distribudos distribudos
Bloqueio nico (Centralizado) Bloqueio nico (Centralizado)
Um Um site site funciona como gerenciador de funciona como gerenciador de locks locks, que , que
administra todos os pedidos de bloqueio de dados administra todos os pedidos de bloqueio de dados
simples, mas sujeito a falhas, e pouco simples, mas sujeito a falhas, e pouco escalvel escalvel
159
Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos
Bloqueio Mltiplo (Distribudo) Bloqueio Mltiplo (Distribudo)
H gerenciadores de bloqueio em diferentes H gerenciadores de bloqueio em diferentes sites sites
Cada gerenciador administra os bloqueios de um Cada gerenciador administra os bloqueios de um
conjunto de dados conjunto de dados
Evita o gargalo do protocolo centralizado Evita o gargalo do protocolo centralizado
Impede o acesso ao dado se o gerenciador falhar Impede o acesso ao dado se o gerenciador falhar
Bloqueio com Cpia Primria Bloqueio com Cpia Primria
Cada dado possui uma cpia primria em um Cada dado possui uma cpia primria em um site site
O bloqueio solicitado ao O bloqueio solicitado ao site site com a cpia primria com a cpia primria
daquele dado, que administra todos os bloqueios daquele dado, que administra todos os bloqueios
to simples e to simples e escalvel escalvel quanto o protocolo anterior quanto o protocolo anterior
Impede o acesso s rplicas se o primrio falhar Impede o acesso s rplicas se o primrio falhar
160
Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos
Bloqueio pela Maioria Bloqueio pela Maioria
Cada Cada site site possui um gerenciador que administra o possui um gerenciador que administra o
bloqueio dos dados locais bloqueio dos dados locais
O bloqueio de dados com rplicas concedido se a O bloqueio de dados com rplicas concedido se a
maioria dos maioria dos sites sites permitir permitir
Mais complexo para implementar que os anteriores Mais complexo para implementar que os anteriores
Bloqueio Parcial Bloqueio Parcial
Assim como no bloqueio por maioria, cada Assim como no bloqueio por maioria, cada site site possui possui
um gerenciador de bloqueio dos dados locais um gerenciador de bloqueio dos dados locais
Bloqueios compartilhados so obtidos Bloqueios compartilhados so obtidos contactando contactando o o
gerenciador de somente uma rplica do dado gerenciador de somente uma rplica do dado
Bloqueios exclusivos devem ser solicitados em todos Bloqueios exclusivos devem ser solicitados em todos
os gerenciadores de bloqueio de todas as rplicas os gerenciadores de bloqueio de todas as rplicas
161
Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos
Timestamp Timestamp nico (Centralizado) nico (Centralizado)
Um nico Um nico site site define as marcas de tempo usando um define as marcas de tempo usando um
contador lgico ou o seu relgio local contador lgico ou o seu relgio local
Sofre de problemas de confiabilidade e Sofre de problemas de confiabilidade e escalabilidade escalabilidade
Timestamp Timestamp Global (Distribudo) Global (Distribudo)
Usa o princpio de relgios lgicos ( Usa o princpio de relgios lgicos (Lamport Lamport, 1978) , 1978)
Um Um timestamp timestamp formado por uma leitura do relgio formado por uma leitura do relgio
concatenada com o identificador do concatenada com o identificador do site site que o gerou que o gerou
Sites Sites atualizam os relgios com base nos atualizam os relgios com base nos timestamps timestamps
de de sub sub- -transes transes que recebem para executar que recebem para executar
Mais robusto e Mais robusto e escalvel escalvel que o esquema centralizado que o esquema centralizado
162
Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos
Deadlocks Deadlocks e Replicao e Replicao
preciso evitar preciso evitar deadlocks deadlocks ao acessar rplicas ao acessar rplicas
Se duas transaes forem acessar um dado duplicado Se duas transaes forem acessar um dado duplicado
e cada uma delas bloquear uma rplica do dado, e cada uma delas bloquear uma rplica do dado,
nenhuma das duas conseguir prosseguir nenhuma das duas conseguir prosseguir
Soluo: obrigar que as transaes bloqueiem as Soluo: obrigar que as transaes bloqueiem as
rplicas na mesma ordem rplicas na mesma ordem
Deadlocks Deadlocks e Fragmentao e Fragmentao
Situao semelhante anterior pode ocorrer quando Situao semelhante anterior pode ocorrer quando
duas transaes bloqueiam fragmentos de dados duas transaes bloqueiam fragmentos de dados
Soluo: bloquear fragmentos seguindo uma ordem Soluo: bloquear fragmentos seguindo uma ordem
163
Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos
Deteco de Deteco de Deadlock Deadlock
O algoritmo de deteco de O algoritmo de deteco de deadlock deadlock visto visto
anteriormente pode ser usado em anteriormente pode ser usado em BDs BDs distribudos se distribudos se
usarmos o protocolo de bloqueio centralizado usarmos o protocolo de bloqueio centralizado
Para os demais protocolos, precisamos modificar o Para os demais protocolos, precisamos modificar o
algoritmo de deteco de algoritmo de deteco de deadlock deadlock
Para montar o grafo, um gerente central precisa Para montar o grafo, um gerente central precisa
obter informaes sobre os obter informaes sobre os locks locks mantidos por mantidos por
todos os gerenciadores de bloqueio todos os gerenciadores de bloqueio
Podem aparecer ciclos falsos no grafo devido ao Podem aparecer ciclos falsos no grafo devido ao
atraso na comunicao atraso na comunicao abortos desnecess abortos desnecess rios rios
Outra opo fazer a deteco de modo distribudo Outra opo fazer a deteco de modo distribudo
164
Concorrncia em Concorrncia em BDs BDs Distribudos Distribudos
Deteco de Deteco de Deadlock Deadlock (cont.) (cont.)
Na deteco distribuda, cada Na deteco distribuda, cada site site monta um grafo de monta um grafo de
espera com os bloqueios mantidos localmente espera com os bloqueios mantidos localmente
Um n T Um n T
EX EX
adicionado ao grafo para representar as adicionado ao grafo para representar as
esperas externas (dados esperas externas (dados
bloqueados por outros bloqueados por outros sites sites) )
Um ciclo envolvendo apenas Um ciclo envolvendo apenas
ns locais indica ns locais indica deadlock deadlock
Um ciclo passando por T Um ciclo passando por T
EX EX
indica um indica um possvel possvel deadlock deadlock
Temos que confirmar a possibilidade de Temos que confirmar a possibilidade de deadlock deadlock
contactando contactando os gerenciadores dos os gerenciadores dos sites sites envolvidos envolvidos
T
EX
T
X
T
Y
T
Z

Você também pode gostar