Você está na página 1de 7

Roteiro

Noes de Controle de Concorrncia


Posicionamento

Luiz Henrique de Campos Merschmann


Departamento de Computao Introduo
Universidade Federal de Ouro Preto
luizhenrique@iceb.ufop.br Tcnicas de Controle de Concorrncia
www.decom.ufop.br/luiz

Tcnicas de Bloqueio para Controle de Concorrncia

BCC321 - Banco de Dados I Introduo

Ementa
1. Conceitos bsicos em sistemas de banco de dados.
2. Conceitos e arquitetura de sistemas de banco de dados.
3. Modelagem conceitual de dados.
Finalidade do Controle de Concorrncia
4. Modelo Relacional: conceitos bsicos e restries de
integridade. I Assegurar o isolamento de transaes que so executadas
concorrentemente.
5. Linguagens: lgebra e clculo relacional.
I Preservar a consistncia do banco de dados.
6. A linguagem SQL e o uso de APIs.
7. Projeto de banco de dados.
8. Normalizao de banco de dados.
9. Noes de processamento de transaes, concorrncia e
recuperao de falhas.
10. Aspectos de implementao de banco de dados.
Tcnicas de Controle de Concorrncia Tcnicas de Bloqueio

I Algumas tcnicas para controle de concorrncia so


I Veremos tcnicas de controle de concorrncia que baseadas no conceito de bloqueio de itens de dados.
asseguram a serializao de planos de execuo usando I Bloqueio uma varivel associada a um item de dado que
protocolos (conjuntos de regras). descreve a condio do item em relao s possveis
I Protocolo com base em bloqueio (Lock ). operaes que podem ser aplicadas a ele.
I Protocolo baseado em ordenao por timestamp.
I Protocolo de concorrncia de multiverso.
I Os bloqueios so usados como meio de sincronizar o acesso
I Protocolo baseado no conceito de validao. por transaes concorrentes aos itens do banco de dados.
I Problemas associados ao uso de bloqueios:
impasse(deadlock ) e inanio (starvation ).

Tipos de Bloqueios Bloqueios Binrios

I Dois estados possveis: bloqueado e desbloqueado (1 e 0).


I Se o valor do bloqueio em X for 1: o item X no pode ser
acessado por uma operao de banco de dados que solicite o
item.
I Se o valor do bloqueio em X for 0: o item X pode ser
I Bloqueios Binrios: so simples, mas muito restritivos (no acessado por uma operao de banco de dados que solicite o
usados na prtica). item.
I Bloqueios Compartilhados/Exclusivos: so usados em I Varivel binria valorada (LOCK) associada a cada item de
esquemas prticos de bloqueios em BD. dado X .
I Sistema de bloqueio:
I Cada bloqueio pode ser um registro de trs campos: <nome
do item de dado, LOCK, transao de bloqueio>
+
I Fila para as transaes que esto esperando para acessar o
item.
Bloqueios Binrios Bloqueios Compartilhados/Exclusivos

I Tabela de bloqueio: registro para os itens que esto


bloqueados.
I Os itens que no esto na tabela de bloqueio so
considerados desbloqueados. I Bloqueio binrio: muito restritivo, pois no mximo uma
I No esquema de bloqueio binrio, toda transao deve transao pode assumir o bloqueio de um item.
obedecer s regras: I No bloqueio compartilhado/exclusivo (leitura/escrita) h 3
_
1. Uma transao T deve garantir a operao lock item(X) operaes: read_lock(X), write_lock(X) e unlock(X).
antes que qualquer operao de escrita e/ou leitura em X
seja executada em T . I Um item read_locked (bloqueado compartilhado) permite
2. Uma transao T deve garantir a operao que outas transaes leiam o item.
_
unlock item(X) depois que todas operaes de escrita I Em um item write_locked (bloqueado exclusivo) uma
e/ou leitura em X forem executadas em T . transao nica controla exclusivamente o bloqueio do item.
3. Uma transao T no executar uma operao
_
lock item(X) se ela j tiver o bloqueio no item X .
4. Uma transao T no executar uma operao
_
unlock item(X), a menos que ela j tenha o bloqueio no
item X .

Bloqueios Compartilhados/Exclusivos Bloqueios Compartilhados/Exclusivos

I O sistema precisa manter registros de bloqueio para os itens


bloqueados na tabela de bloqueio. I Regras do esquema de bloqueio compartilhado/exclusivo:
I Cada registro na tabela ter 4 campos: <nome do item de 1. Uma transao T no vai gerar uma operao read_lock(X)
dado, LOCK, no de leituras, transao(es) bloqueio>. se ela j controlar um bloqueio de leitura ou um bloqueio de
escrita no item X (essa regra pode ser relaxada com
I Regras do esquema de bloqueio compartilhado/exclusivo: converso de bloqueios).
1. Uma transao T deve garantir uma operao read_lock(X) 2. Uma transao T no vai gerar uma operao
ou write_lock(X) antes de qualquer operao ler_item(X) write_lock(X) se ela j controlar um bloqueio de leitura ou
ser executada em T . um bloqueio de escrita no item X (essa regra pode ser
2. Uma transao T deve garantir uma operao relaxada com converso de bloqueios).
write_lock(X) antes de qualquer operao 3. Uma transao T no gerar uma operao unlock(X) a
escrever_item(X) ser executada em T . menos que ela j controle um bloqueio de leitura ou um
3. Uma transao T deve garantir uma operao unlock(X) bloqueio de escrita em um item X .
depois que todas as operaes ler_item(X) e
escrever_item(X) so completadas em T .
Converso de Bloqueios Bloqueios
Usar bloqueios no garante serializao de planos de execuo.
Exemplo: As regras de bloqueio so seguidas, mas produzem um
plano de execuo no serializvel.
I A uma transao que j controla um bloqueio num item X ,
converter um bloqueio de um estado para outro.
I possvel para uma transao gerar uma operao
read_lock(X) e depois, com a promoo do bloqueio, gerar
uma operao write_lock(X).
I Tambm possvel uma transao gerar uma operao
write_lock(X) e depois fazer um rebaixamento de
bloqueio para uma operao read_lock(X).

c) Um plano de execuo no serializvel que usa bloqueios.

Para garantir a serializao devemos seguir um protocolo


(relacionado ao posicionamento das operaes de bloqueio e
desbloqueio na transao).

Protocolo de Bloqueio em Duas Fases Protocolo de Bloqueio em Duas Fases

nmero GrficodebloqueiosdeT
I Uma transao segue esse protocolo se todas as operaes bloqueios
de bloqueio de leitura e de escrita precedem a primeira pontoemqueosbloqueiospara
operao de desbloqueio na transao. todososdadosdesejadosporT
I Transao dividida em duas fases: foramobtidos(Pmax(T))
I Fase de expanso: quando novos bloqueios nos itens podem
ser adquiridos, mas no podem ser liberados.
I Fase de encolhimento: quando os bloqueios existentes
podem ser liberados, mas novos bloqueios no podem ser
adquiridos.
I Se a converso de bloqueio for permitida: crescimento encolhimento
I A promoo dever ser feita na fase de expanso.
I O rebaixamento deve ser feito na fase de encolhimento.

start commit tempo


execuodeoperaesdeT
Protocolo de Bloqueio em Duas Fases Protocolo de Bloqueio em Duas Fases
As transaes T1 e T2 da gura a seguir seguem o protocolo de
bloqueio em duas fases? As transaes T10 e T20 da gura a seguir
seguem o protocolo de bloqueio em duas fases?

I Variaes de bloqueio em duas fases (2PL - two-phase


locking ):
I 2PL bsico: tcnica descrita anteriormente.
I 2PL conservador (ou esttico).
I 2PL estrito.
I 2PL rigoroso.
I A maioria dos sistemas de banco de dados implementa ou o
bloqueio em duas fases estrito ou o rigoroso.

I Se toda transao seguir o protocolo de bloqueio em duas


fases garantido que o plano de execuo seja serializvel.
I O bloqueio em duas fases pode limitar a quantidade de
concorrncia que pode surgir em um plano de execuo.

2PL Conservador (ou Esttico) 2PL Estrito

I Requer que todos os itens a serem usados por uma


transao (lidos ou escritos) sejam bloqueados antes do I A transao T no libera nenhum de seus bloqueios
incio da transao. exclusivos at que ela efetive ou aborte.
I Caso no seja possvel bloquear todos os itens, nenhum
bloqueio feito e a transao entra em espera. nmero nmero
bloqueios bloqueios
comparti Pmax(T) exclusivos
nmero lhados Pmax(T)
bloqueios Pmax(T)
cresci encolhi crescimento
encolhimento mento mento
start commit tempo start commit tempo

I Vantagem: garante planos estritos.


I Vantagem: esse protocolo deadlock-free. I Desvantagem: no deadlock-free.
I Desvantagem: espera pela aquisio de todos os bloqueios.
2PL rigoroso Protocolo de Bloqueio em Duas Fases

I uma variao mais restritiva do que o 2PL estrito.


I A transao no libera nenhum de seus bloqueios
(compartilhados e exclusivos) at que ela efetive ou aborte.

nmerode I Esse protocolo de bloqueio garante a serializao, mas no


bloqueios permite todos os planos de execuo serializveis possveis.
Pmax(T) I O uso de bloqueios pode causar dois problemas:
crescimento
I Deadlock (Impasse).
I Starvation (Inanio).
start commit tempo

I Vantagem: garante planos estritos com menos overhead,


pois libera todos os itens apenas no nal.
I Desvantagem: limita mais a concorrncia.

Deadlock Deadlock
I Um sistema est em estado de deadlock se h um conjunto
de transaes, tal que toda transao desse conjunto est
esperando outra transao tambm nele contida.
I Exemplo: T10 e T20 so travadas indenidamente (deadlock )
no plano de execuo a seguir.
Mtodos para o tratamento do deadlock
I Esquemas de preveno de deadlock.
I Esquemas de deteco de deadlock e timeouts.
Inanio (Starvation )

Perguntas
I Quando uma transao ca esperando por um perodo de
tempo indenido, enquanto outras transaes continuam
normalmente.
I Quando uma sequncia de transaes solicita bloqueio
compartilhado sobre um mesmo item de dado, de modo que
um transao que solicitou um bloqueio exclusivo nunca
seja atendida (inanio).
I Quando o algoritmo de deteco de deadlock, na seleo
da(s) vtima(s) (transao a ser abortada), seleciona
repetidamente a mesma transao.
I Possveis solues:
I Criao de la para o atendimento das solicitaes de
bloqueio das transaes.
I Atribuir prioridades para o atendimento das transaes (p.
ex., de acordo com o tempo de espera).

FIM

Você também pode gostar