Académique Documents
Professionnel Documents
Culture Documents
Curso Multiplus
Unlocked (0)
Estados:
Operaes: Lock(x), Unlock(x)
1
Mecanismos de Locks
item lock
Lock exclusivo: 0/1
Mecanismos de Locks
Lock Compartilhado: existe concorrncia
- operao de leitura compartilhada (read_lock(x))
- gravao bloqueada de forma exclusiva
(write_lock(x))
read_lock(x)
write_lock(x)
unlock
2
Regras p/lock compartilhado
Locks exclusivos/compartilhados
no garantem a serializao
Exemplo:
S T1 T2
x=20, y=30
read_lock(y) read_lock(x)
read y read x T1 T2
unlock y unlock x
write_lock(x) write_lock (y)
read (x) read (y) T2 T1
x:= x+y y:=x+y
x=50, y=80 x=70, y=50
write(x) write(y)
unlock(x) unlock(y)
3
Tornando T1 e T2 concorrentes
S1 T1 T2
read_lock(y)
read y x=20, y=30
unlock y
read_lock (x)
read x
unlock x
write_lock (y) x=50, y=50
read y
y:= x+y
write y
unlock y
S1 < > S
write_lock (x)
read x S1 serializvel?
x:= x+y
write x
unlock x Por que?
T1 T2
S2
read_lock(y) read _lock(x)
write_lock(x) write_lock(y)
read y read x
unlock y unlock x
read x read y
x:=x+y y:=x+y
write x write y
unlock x unlock y
4
Protocolo de Bloqueio Bifsico
Bsico (2-phase locking 2PL)
Limita o grau de concorrncia pois:
a transao deve bloquear um item X antes
mesmo de ser necessrio. Somente depois
que todos os itens necessrios transao
tenham sido bloqueados, X poder ser
relaxado.
Garante serializao do esquema
Porm, pode causar deadlock,
starvation (livelock)
Deadlock (Impasse)
read_lock(y) X
read y T1 T2
read_lock(x) Y
read x
write_lock(x)
write_lock(y)
5
Protocolos p/ preveno de
deadlocks
1- 2PL Conservador: toda transao bloqueia previamente
todos os itens que necessitar; se algum item no puder ser
acessado, ento nenhum bloqueado. A transao espera e
tenta de novo (limita concorrncia);
2- Bloqueio de itens por ordem: ordena todos os itens no
BD de forma a assegurar que os itens utilizados sero
bloqueados naquela ordem;
3- Timestamp(TS): identificador serial nico para cada
transao. Transaes ordenadas segundo seus TS.
TS(T1) < TS(T2)
+ velha
Protocolos p/ preveno de
deadlocks: baseados em TS
Supor que uma transao Ti tente bloquear X porm no
consegue porque X j est bloqueado por outra
transao Tj
3a. Esperar-morrer (wait-die)
se TS(Ti) < TS(Tj) (Ti mais antiga que Tj)
ento Ti espera
seno Ti aborta e recomea + tarde com o mesmo TS
3b Ferir-esperar (wound-wait)
se TS(Ti) < TS(Tj)
ento Tj aborta e recomea + tarde
seno Ti espera
(3a e 3b podem causar sucessivos abort/restart)
6
Protocolos p/ preveno de
deadlocks: no utilizam TS
4- Espera cuidadosa:
Situao: Ti tenta acessar X mas este est bloqueado por Tj
Se Tj no estiver aguardando nenhum item bloqueado
ento Ti bloqueado e pode esperar, seno Ti aborta
5- Grafo de espera
Quando Ti estiver a espera de um bloqueio no item X que j estiver
bloqueado por Tj, traar um arco Ti Tj
Starvation (Inanio)
Uma transao no pode prosseguir por um tempo
indefinido, enquanto outras continuam aguardando
First-come-first-serve
(transaes podem bloquear um item segundo a ordem em que
solicitaram o lock)
7
Compatibilidade entre Read/Write
T(locks X)
T Read Write
Read sim no
Write no no
Granularidade de itens
8
Bloqueios em granularidade
mltipla
BD
A1 A2
r111 ... r11j r121 ... r12j ... r1n1... r1nj ... r21k r221 ... r22k ... r22j .... r2mk
r211
9
Matriz de compatibilidade
T
IS IX S SIX X
IS S S S S N
T IX S S N N N
S S N S N N
SIX S N N N N
X N N N N N
Protocolo utilizado
1- Bloqueios conflitantes no podem ser concedidos
2- A raiz da rvore deve ser bloqueada primeiro em qq modo
3- Um n N pode ser bloqueado por uma transao T em modo
compartilhado(S) ou IS somente se o n pai N j estiver bloqueado
por T nos modos IS ou IX
4- Um n N pode ser bloqueado por uma trans. T em modo X,IX ou
SIX somente se o n pai N j estiver bloqueado por T nos modos IX
ou SIX
5- Uma trans. T pode bloquear um n somente se no tiver
desbloqueado nenhum n (protocolo 2PL)
6- Uma transao T pode desbloquear um n N somente se nenhum
dos ns filhos de n estiver bloqueado por T
10
Granularidade mltipla
Quando utilizar?
Transaes curtas que acessam
poucos itens (registros ou campos)
Transaes longas que acessam
arquivos
menos bloqueios
menos overhead
SGBDs que oferecem granularidade
mltipla: Oracle, SQLServer, DB2
(registros, tabelas, BD...)
11
Algoritmo de ordenao por
TimeStamp (TS)
12
Tcnica otimista p/ controle de
concorrncia
Nenhum teste realizado durante a
transao
Atualizaes no so feitas diretamente no
BD at que a transao termine
Fases:
fase de leitura: leitura de itens
committeddo BD; atualizaes locais
fase de validao: teste de serializao
fase de gravao: se validao ok, grava
atualizao no BD; seno descarta-as, e T
reiniciada
Protocolo otimista
Fase de validao:
1. Tj completa sua fase de gravao antes que Ti
inicie sua fase de leitura
2. Ti comea gravao depois que Tj completa fase
de gravao, e a leitura de Ti no tem itens em
comum com a gravao de Tj
3. Ambas operaes de read/write de Ti no tm
itens em comum com o write de Tj, e Tj completa
sua leitura antes que Ti complete sua fase de
leitura
A validao bem sucedida se uma dessas
condies ocorrer
13