Escolar Documentos
Profissional Documentos
Cultura Documentos
Transações Distribuidas
Transações Distribuidas
Ricardo Anido
MC704
Arquitetura
GT3
GT1
CT1
GT2
CT3
CT2
N 3
N 1
N 2
3
Controle de Concorrncia
Protocolos baseados em locks
Protocolos baseados em timestamp
Deadlock
Considere o escalonamento parcial
T3
T4
lockEx(B)
read(B)
B = B 50
write(B)
lockCp(A)
read(A)
lockCp(B)
lockEx(A)
11
num.
locks
fase 1
fase 2
tempo
12
num.
locks
fase 1
fase 2
tempo
14
Converso de locks
Protocolo de lock em duas fases com converso:
Fase 1:
pode requisitar lockCp sobre dado.
pode requisitar lockEx sobre dado.
pode converter lockCp em lockEx.
Fase 2:
pode liberar lock-Cp.
pode liberar lock-Ex.
pode converter lockEx em lockCp
16
17
Implementao
Servidor de locks centralizado
Fcil de gerenciar, mas ponto central de falha
Servidor de locks distribudo
Resolve o problema de falha, mas pode levar a
deadlock distribudo.
19
Exerccio
T9: write(D)
Antes
TS-W=6
TS-R=7
Depois ?? (complete)
TS-W=
TS-R=
23
Exerccio (cont.)
T7: write(D)
Antes
TS-W=6
TS-R=8
Depois ?? (complete)
TS-W=
TS-R=
24
Exerccio (cont.)
D:
TS-W=6
TS-R=8
a) T7: read(D)
b) T5: read(D)
c) T9: read(D)
25
Exemplo de uso
Escalonamento parcial, transaes com timestamps
1, 2, 3, 4 e 5.
T1
T2
T3
T4
T5
read(X)
read(Y)
read(Y)
write(Y)
write(Z)
read(Z)
read(Z)
abort()
read(X)
write(Z)
abort()
write(X)
write(Z)
26
transao com
timestamp
maior
Mltiplas verses
Esquemas com verses mltiplas mantm verses
antigas de dados para aumentar concorrncia. Podem
ser baseados em
Ordem de timestamp
Lock de duas fases
Cada atualizao efetuada com sucesso cria uma
nova verso do dado.
Timestamps so usadas para rotular verses
31
32
33
Quando transao Ti cria nova verso Qk, Rtimestamp e W-timestamp so inicializadas com
TS(Ti).
Quando uma transao Ti l Qk e TS(Ti) > Rtimestamp(Qk), atualiza-se a R-timestamp.
34
35
Exerccio
Qual o valor lido?
T5
W-timestamp = 4
W-timestamp = 6
R-timestamp = 6
R-timestamp = 8
valor = 37
valor = 32
A) T5.read(Q) =
B) T7.read(Q) =
36
37
Exerccio
Complete com novas verses, conforme o caso
Ti
W-timestamp = 4
W-timestamp = 6
R-timestamp = 6
R-timestamp = 8
valor = 37
valor = 32
A) T5.write(Q, 29)
B) T7.write(Q, 34)
C) T8.write(Q, 23)
D) T9.write(Q, 42)
38
40
Operaes de remoo
Se ptrotocolo de lock de duas fases utilizado,
necessrio bloquear o dado com lock exclusivo antes
que ele possa ser removido.
Se protocolo de timestamp utilizado, regra similar a
write. Suponha que Ti deseje executar delete(D):
43
44
Operaes de insero
Operao insert(D) conflita com delete(D), read(D)
e write(D), j que nenhum dado pode ser removido,
lido ou escrito antes de existir.
Uma vez que insert(D) atribui um valor para o dado
D, operao deve ser tratada da mesma forma que
write, tanto no protocolo de lock como no protocolo
de timestamp.
45
Tratamento de deadlocks
Considere as seguintes transaes:
T1: write(X)
write(Y)
T2: write(Y)
write(X)
T2
lockEx(X)
write(X)
B = B 50
write(B)
lockEx(Y)
write(Y)
wait lockEx(X)
wait lockEx(Y)
46
T2
T3
T4
47
Preveno de deadlocks
Algumas estratgias de preveno:
Pr-declarao: requer que cada transao efetue
lock de todos os seus dados antes do incio da
execuo.
Ordenao: Impor ordem parcial de todos os
dados e requerer que uma transao efetue lock
nos dados somente na ordem especificada.
48
49
51
Deteo de deadlocks
Deadlocks podem ser descritos por um grafo de
espera (wait-for graph) G = (V, E)
V o conjunto de vrtices (todas as transaes do
sistema).
E o conjunto de arestas, cada elemento um par
ordenado Ti Tj.
T1
T2
T3
T4
53
54
T2
T3
T2
T1
T3
T4
T4
Sem ciclo
T5
Com ciclo
55
Recuperao de deadlocks
Quando dedlock detectado:
Deve-se procurar uma vtima (transao que ser
desfeita). Procurar selecionar a vtima que causar
menor custo; para evitar starvation, incluir nmero
de rollbacks no custo.
Extenso do rollback:
Total: aborta a transao e a reinicia.
Parcial: efetuar rollback somente at o ponto onde
deadlock quebrado.
56