Você está na página 1de 8

Banco de Dados

Fernando Fonseca
&
Ana Carolina Salgado
18/9/2009






Controle de Concorrncia
Definio
Concorrncia a propriedade de uma transao
poder ser executada em paralelo com outras
transaes
Justificativa de uso
Com a execuo de vrias transaes ao mesmo
tempo, o processador pode ser compartilhado
entre essas transaes, melhorando a eficincia
global do computador dado que uma maior
quantidade de trabalho executada em menos
tempo

Mestrado / Doutorado

2






Controle de Concorrncia

Justificativa de um controle
necessrio que o sistema monitorize a
interao entre transaes concorrentes, de
modo a evitar que elas destruam a consistncia
do BD






Controle de Concorrncia
Transaes 1 2
...
n


Gerenciador de
Transaes
ARQUITETURA
Escalonador

Gerenciador de Dados
Gerenciador de
Recuperao
Gerenciador
BD
Cache

Mestrado / Doutorado

3

Mestrado / Doutorado

4







Controle de Concorrncia
Tcnicas de Bloqueio (Locks)
LOCK
Varivel associada a um item de dados no BD
que descreve o status desse item com
respeito a possveis operaes a serem
aplicadas a ele
LOCK BINRIO
Dois estados ou valores: locked (1) ou
unlocked (0)
Um lock distinto associado a cada item do
BD - referenciado como lock (x) para o item
x







Controle de Concorrncia

LOCK BINRIO (Cont.)

Operaes includas nas transaes :
lock_item e unlock_item, implementadas
como operaes indivisveis
Um gerenciador mantido pelo SGBD para
registrar e controlar o acesso a locks
Registro de lock: <nome-do-item, LOCK>
Tabela de locks: mantm esses registros

Mestrado / Doutorado

5

Mestrado / Doutorado

6






1








Controle de Concorrncia

LOCK BINRIO (Cont.)
Regras
Uma transao T tem que executar uma
operao lock_item(x) antes de qualquer
read_item ou write_item executada por T

Uma transao T tem que executar a
operao unlock_item(x) aps todo
read/write completados em T
18/9/2009






Controle de Concorrncia

Regras (Cont.)
Uma transao no pode executar outra
operao lock_item(x) se j tem um lock
sobre x
Uma transao T no pode executar um
unlock_item(x) a menos que tenha um
lock sobre x
Apenas uma transao pode ter um lock
num dado item


Mestrado / Doutorado


7


Mestrado / Doutorado


8







Controle de Concorrncia

LOCK DE MODO MLTIPLO
Trs operaes (indivisveis)
read_lock(x) - lock compartilhado
write_lock(x) - lock exclusivo
unlock(x)
Registro de Lock
<nome-do-item, LOCK, nmero-de-
leituras>






Controle de Concorrncia
Regras
Uma transao T tem que executar uma
operao read_lock(x) ou write_lock(x)
antes de qualquer read-item(x) em T
Uma transao T tem que executar uma
operao write_lock(x) antes de
qualquer write-item(x) em T
Uma transao tem que executar uma
operao unlock(x) aps todas as
operaes read_item(x) e write_item(x)
completadas em T

Mestrado / Doutorado

9

Mestrado / Doutorado

10







Controle de Concorrncia

Regras (Cont.)
Uma transao T no executar um
read_lock(x) se j tem um lock (read)
compartilhado ou um lock (write)
exclusivo em x (pode ser relaxado)
Uma transao T no executar outro
write_lock(x) se j tem um lock (read)
compartilhado ou um lock (write)
exclusivo em x (pode ser relaxado)






Controle de Concorrncia
Regras (Cont.)
Uma transao T no executar um
unlock(x) a menos que j tenha um lock
compartilhado ou exclusivo em x

INCREMENTO DE LOCK
Uma transao aps ter um read_lock(x) e sendo
a nica que detm x, pode posteriormente
executar um write_lock(x) sobre x


Mestrado / Doutorado


11


Mestrado / Doutorado


12






2








Controle de Concorrncia
DECREMENTO DE LOCK
Aps ter um lock exclusivo sobre um item x, uma
transao T pode decrementar o lock,
executando um read_lock(x)
Locks binrios ou mltiplos no garantem a
serializabilidade de escalonamentos nos quais as
transaes participam. necessrio um
protocolo adicional que contempla o
posicionamento de locks e unlocks em cada
transao
18/9/2009






Controle de Concorrncia

BLOQUEIOS EXCLUSIVOS
Se uma transao T contiver um bloqueio
exclusivo em algum objeto, ento nenhuma
transao distinta T pode fazer bloqueio daquele
objeto at que T libere o seu bloqueio

Mestrado / Doutorado

13

Mestrado / Doutorado

14







Controle de Concorrncia

Protocolo
Qualquer transao que pretenda atualizar um
registro R, primeiro ter que acessar aquele
registro e bloque-lo exclusivamente. Se o
bloqueio no puder ser feito, a transao entra
em um estado de espera e apenas continuar
o processamento quando o registro se tornar
disponvel e o bloqueio puder ser concedido







Controle de Concorrncia

Protocolo (Cont.)
O sistema ter que garantir que uma
transao forada a esperar por causa
desse protocolo, eventualmente sair do
estado de espera (no sofre livelock)
Para evitar a possibilidade de perda de
atualizaes, nenhuma transao poder
ter acesso aos dados de uma atualizao
no efetuada

Mestrado / Doutorado


15

Mestrado / Doutorado


16







Controle de Concorrncia

BLOQUEIOS COMPARTILHADOS
Se uma transao T mantiver um bloqueio
compartilhado em algum objeto, ento uma
transao T distinta tambm pode fazer um
bloqueio compartilhado sobre aquele objeto.
Mas, nenhuma transao T distinta pode fazer
um bloqueio exclusivo sobre aquele objeto at
que todos os bloqueios compartilhados do
objeto tenham sido liberados







Controle de Concorrncia




T T Excl Comp

_

Excl N N C

Comp N C C

_
C C

C





Mestrado / Doutorado


17


Mestrado / Doutorado


18






3








Controle de Concorrncia

BLOQUEIOS DE DUAS FASES
Se todas as transaes obedecerem s
seguintes regras
1. Antes de operar sobre qualquer objeto, a
transao primeiro adquire um bloqueio sobre
aquele objeto

2. Aps liberar o bloqueio, a transao no
adquire mais bloqueios
18/9/2009






Controle de Concorrncia
Todas as execues intercaladas dessas
transaes so serializveis
Uma transao que obedea as regras 1 e 2
acima dito que satisfaz o bloqueio de duas
fases
Fases
Crescente:quando os bloqueios so feitos
Encolhimento: quando os bloqueios so
liberados
Se o decrscimo de lock for permitido, ele tem
que ser feito na fase de encolhimento

Mestrado / Doutorado

19

Mestrado / Doutorado

20







Controle de Concorrncia

Pode limitar o acesso concorrente
Uma transao tem que manter um lock sobre x
mesmo que no precise dele, se tiver que
exercer um lock sobre outro objeto y. Por outro
lado, para poder liberar x mais cedo, a transao
ter que bloquear y mais cedo







Controle de Concorrncia
BLOQUEIOS DE DUAS FASES (Cont.)
Variao do protocolo
BSICO (visto anteriormente)
CONSERVADOR OU ESTTICO:
bloqueia todos os itens que acessar,
antes de iniciar a execuo da transao

ESTRITO (mais popular): no libera os
locks at o commit ou abort
Podem Causar Deadlock ou Livelock

Mestrado / Doutorado

21

Mestrado / Doutorado

22







Controle de Concorrncia

DEADLOCK
uma situao em que duas ou mais transaes
esto em estado simultneo de espera, cada
uma aguardando que uma das demais libere um
bloqueio para ela poder prosseguir

Principais mtodos para solucionar o impasse
(podem resultar na repetio da transao)







Controle de Concorrncia

Principais Mtodos (Cont.)
Protocolo de Preveno de Deadlock
Conservador: se algum dos itens no pode
ser bloqueado, nenhum ser bloqueado
Ordenado: tentar por uma ordenao em
todos os itens e os locks s podem ocorrer
segundo esta ordem


Mestrado / Doutorado


23


Mestrado / Doutorado


24






4








Controle de Concorrncia

DEADLOCK (Cont.)
Tcnicas Baseadas em Timestamping
Identificador nico assinalado a cada
transao
Ordenados segundo a ordem em que as
transaes comearam
Principal vantagem: no usa bloqueios,
logo deadlock impossvel
18/9/2009






Controle de Concorrncia
Protocolos
Quando uma transao solicita um bloqueio
de um registro que j est bloqueado por
outra transao, ento um dos dois
procedimentos seguido
Wait-die - se a transao que solicitou o
bloqueio a mais antiga, pode aguardar.
Se for a mais nova, sofre rollback e
recomea mais tarde com mesmo
timestamping


Mestrado / Doutorado


25


Mestrado / Doutorado


26







Controle de Concorrncia
Protocolos (Cont.)
Wound-wait - se for a transao mais nova,
pode aguardar. Se for a mais antiga,
interrompe a mais nova, a qual sofre rollback.
Recomea mais tarde com mesmo
timestamping






Controle de Concorrncia
Protocolo de Deteco e Recuperao
Verificao da existncia de deadlock
Sempre que uma solicitao de
bloqueio cause espera
Permite deteco imediata do
impasse
Acarreta um overhead
Em alguma base peridica
Reduz o overhead
Alguns deadlocks sero detectados
tardiamente

Mestrado / Doutorado

27

Mestrado / Doutorado

28







Controle de Concorrncia

DEADLOCK (Cont.)

Condies ideais
Pequena interferncia entre as transaes
Transaes curtas
Locks de poucos itens
Carga da transao leve






Controle de Concorrncia
Quebra de deadlock consiste na escolha de
uma das transaes para for-la a um rollback

A que foi iniciada mais recentemente
A que tiver feito o menor nmero de
bloqueios
A que tiver feito o menor nmero de
atualizaes
Situao oposta
Usar um esquema de preveno de deadlock


Mestrado / Doutorado


29


Mestrado / Doutorado


30






5








Controle de Concorrncia

LIVELOCK
A transao no pode prosseguir por um perodo
indefinido de tempo enquanto outras transaes
continuam normalmente (esquema injusto de
espera por lock)
Associar first-come-first-serve
Incremento de prioridade com o tempo
18/9/2009






Controle de Concorrncia

STARVATION
Problema similar ao livelock, ocorre se o
algoritmo seleciona a mesma transao como
vtima repetidamente, causando abort repetidos
e nunca acabando a execuo
Os protocolos wait-die e wound-wait
apresentados evitam starvation



Mestrado / Doutorado



31



Mestrado / Doutorado



32






Controle de Concorrncia

O ambiente de BD difere de outros ambientes no
que concerne os problemas de bloqueio devido
a
O conjunto de objetos bloqueveis no s
muito grande como tambm muda muito
rpido
Objetos bloqueveis so tipicamente
endereados pelo contedo
O escopo preciso do bloqueio para
determinada transao normalmente
determinado com muita rapidez







Controle de Concorrncia

Outros Mtodos
Tcnicas de controle de concorrncia com
multi-verso
Vrias verses X
1
, X
2
,..., X
n
de cada item
de dado X so guardadas pelo sistema
Baseada na ordem dos timestamping
Bloqueio de duas fases

Mestrado / Doutorado

33

Mestrado / Doutorado

34







Controle de Concorrncia

Outros Mtodos (Cont.)
Tcnica de Validao (otimista)
As atualizaes efetuadas no so
efetivadas no BD at o final da transao
Fase de leitura: leitura mas atualizaes
no efetivadas
Fase de validao: verifica se tudo
correu em ordem
Fase de escrita: se validao OK,
atualiza o BD






Controle de Concorrncia
Granularidade de Bloqueio no BD

campo especfico


< concorrnciaregistro
> nmero de
arquivo

bloqueios
BD




Quanto maior nmero de locks a ser gerenciado:
- maior overhead
- mais espao para a tabela de locks

OBS: 1. os bloqueios em todo o BD so liberados
no final do programa e no no commit
2. os bloqueios de atualizao s fazem
sentido na granularidade mais fina

Mestrado / Doutorado

35

Mestrado / Doutorado

36






6








Controle de Concorrncia

Controle de concorrncia sem bloqueios
TIMESTAMPS
Criados pelo SGBD para identificar uma
transao
So assinalados na ordem em que as
transaes so submetidas ao sistema
[TS(T)]
Gerao: contador ou clock do sistema
18/9/2009






Controle de Concorrncia

Ordenao de transaes baseadas em
Timestamp
Executam livremente
Asseguram que para cada item acessado por
mais de uma transao, a ordem dos acessos
no viola a serializabilidade do escalonamento


Mestrado / Doutorado



37


Mestrado / Doutorado



38






Controle de Concorrncia

Ordenao de transaes baseadas em
Timestamp (Cont.)
Para tanto so associados dois timestamps
para cada item do BD
read_TS(x) - timestamp de leitura de x
O maior timestamp de todas as transaes
que leram x com sucesso
write_TS(x) - timestamp de escrita de x
O maior timestamp de todas as transaes
que atualizaram x






Controle de Concorrncia

ORDENAO (Cont.)

Para uma transao disparar um read ou write
em x, o timestamp de T comparado com o
read_TS ou write_TS de x para garantir a
ordenao da execuo

Mestrado / Doutorado
39

Mestrado / Doutorado

40






Controle de Concorrncia
Algoritmo para write
a . se read_TS(x) > TS(T)
abortar T e dar rollback em T
/* transao mais nova leu antes desta atualizar */
b. se write_TS(x) > TS(T)
no executar a operao mas prosseguir o
processamento /* para no perder a ltima
atualizao feita */
c . No ocorrendo a nem b
write_item(x) e write_TS(x) = TS(T)

Mestrado / Doutorado
41







Controle de Concorrncia

Algoritmo para read
a . se write_TS(x) > TS(T)
abortar T e dar rollback em T
/* transao mais nova escreveu o item
antes desta ler */
b. se write_TS(x) < = TS(T)
read_item(x) e

read_TS(x) = maior (TS(T), atual read_TS(x)
)

Mestrado / Doutorado
42






7
18/9/2009






Controle de Concorrncia

OBS: Livelock pode ocorrer se T
continuamente abortada e recomeada
(Recomeo Cclico)








Mestrado / Doutorado








43


















































8