Вы находитесь на странице: 1из 99

Banco de dados II

Processamento de transaes

Banco de Dados II Processamento de


Transaes
Sumrio
Conceito de transao
Propriedades de uma transao
Execues concorrentes
Serializao
Recuperao

Banco de Dados II Processamento de


Transaes
Sumrio
Conceito de transao
Propriedades de uma transao
Execues concorrentes
Serializao
Recuperao

Banco de Dados II Processamento de


Transaes
Conceito de transao
Os Sistemas de Gerenciamento de Banco de
Dados (SGBDs) executam operaes de diversos
usurios ao mesmo tempo (por se tratarem de
sistemas multiusurio).

Banco de Dados II Processamento de


Transaes
Conceito de transao
A e B processos intercalados
C e D processos paralelos

Banco de Dados II Processamento de


Transaes
Conceito de transao
Transao uma unidade da execuo de
programa que acessa e, possivelmente, atualiza
vrios itens de dados.
(Silberschatz, Sistema de Banco de Dados)

Banco de Dados II Processamento de


Transaes
Conceito de transao
A transao pode incluir as operaes de:
Excluso de dados
Insero de dados
Modificao ou recuperao de dados

Banco de Dados II Processamento de


Transaes
Conceito de transao
A transao pode ser inicializada por intermdio de
um programa escrito em uma linguagem de
programao de alto nvel.
Ex.:
Begin Transaction
...
Operaes (Execuo da Transao)
...
End Transaction

Banco de Dados II Processamento de


Transaes
Conceito de transao
Para que uma transao seja bem sucedida
necessrio que esteja armazenado em um Banco
de Dados que seja consistente.

Um Banco de Dados consistente se o seu estado atende a todas as


restries que foram definidas previamente para ele, ou seja, ele deve
atender realidade daquilo que foi projetado.

Banco de Dados II Processamento de


Transaes
Conceito de transao
Entretanto, durante a execuo da transao, o
Banco de Dados pode permanecer
(temporariamente) como um BD inconsistente.

Lembre do exemplo dado em gebra Relacional no qual aplicavamos um


Produto Cartesiano em determinadas relaes. Como o Produto Cartesiano
misturava todo mundo com todo mundo, tnhamos inconsistncias em
relao as relaes originais.

Banco de Dados II Processamento de


Transaes
Conceito de transao
Finalmente, ao trmino da transao (transao
completada e confirmada), o BD tem que ser
necessariamente um BD consistente.

Banco de Dados II Processamento de


Transaes
Conceito de transao

Operaes:
begin_transaction: inicia a execuo de uma
transao
end_transaction: finaliza a transao (deve-se
verificar se a transao foi finalizada com
sucesso ou no)

Banco de Dados II Processamento de


Transaes
Conceito de transao

Operaes:
read_item(X) ou r(X) : executa a leitura de um
item X do Banco de Dados, armazenando este
item em uma varivel do programa que tambm
dever ser chamada de X.

Banco de Dados II Processamento de


Transaes
Conceito de transao

Operaes:
write_item(X) ou w(X) : faz a gravao do
valor da varivel X do programa em um item do
Banco de dados denominado X.

Banco de Dados II Processamento de


Transaes
Conceito de transao

Operaes:
commit_transaction: informa se a transao
foi executada com sucesso
abort_transaction: informa se a transao
NO foi executada com sucesso (neste caso h o
descarte das operaes realizadas)

Banco de Dados II Processamento de


Transaes
Conceito de transao
Exemplo: Diagrama mostrando os estados para a execuo da transao
begin_transaction
end_transaction

commit_transaction

Parcialmente
confirmado

Ativo

Confirmado

abort_transaction
abort_transaction
read, write

Finalizado
sem Sucesso

Finalizado

Banco de Dados II Processamento de


Transaes
Conceito de transao
Observaes:
Passos da operao de leitura read_item(X):
Encontrar o endereo do bloco que contm X
Copiar o bloco para o buffer da memria (se for
necessrio)
Copiar o valor de X (no buffer) para varivel X

Banco de Dados II Processamento de


Transaes
Conceito de transao
Observaes:
Passos da operao de escrita write_item(X):
Encontrar o endereo do bloco que contm X
Copiar o bloco para o buffer da memria (se for
necessrio)
Copiar o valor da varivel X para o buffer
Escrever o novo valor do item X do disco (para isto
temos que ter autorizao do BD)

Banco de Dados II Processamento de


Transaes
Conceito de transao
Observaes:
Transaes submetidas pelos usurios podem ser
executadas de forma concorrente e podem alterar e
acessar os mesmos itens de dados
Uma execuo feita de modo no controlado pode
resultar em problemas tais como inconsistncias no
BD.

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
As propriedades de uma transao pode ser resumidas
na sigla A.C.I.D.:
Atomicidade
Consistncia
Isolamento
Durabilidade

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Atomicidade
Uma transao considerada uma unidade atmica de
processamento, ou seja,TODAS as suas operaes
devem ser executadas, caso contrrio, os resultados
parciais so desfeitos.

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Atomicidade
A preservao de atomicidade no caso de abort,
devido a erros de entrada, sobrecarga de sistema ou
deadlock, controlada por um processo denominado
de transaction recovery.

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Atomicidade
A preservao de atomicidade no caso de falhas do
sistema controlada por um processo denominado
crash recovery.

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Consistncia
A execuo de uma transao deve levar o BD de um
estado consistente para outro, mesmo que ENTRE estes
estados haja um estado inconsistente.

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Consistncia
Definio: Dirty Data dado atualizado por uma
transao que ainda no foi consolidada.

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Consistncia
Graus de inconsistncia: do grau 0 ao grau 3
Grau 0:
Transao T no sobrescreve o Dirty Data de uma
outra transao T

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Consistncia
Graus de inconsistncia: do grau 0 ao grau 3
Grau 1:
Transao T no sobrescreve o Dirty Data de uma
outra transao T
Transao T no consolida qualquer gravao at
concluir todas as suas tarefas

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Consistncia
Graus de inconsistncia: do grau 0 ao grau 3
Grau 2:
Transao T no sobrescreve o Dirty Data de uma
outra transao T
Transao T no consolida qualquer gravao at
concluir todas as suas tarefas
Transao T no faz a leitura do Dirty Data de outra
transao T

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Consistncia
Graus de inconsistncia: do grau 0 ao grau 3
Grau 3:
Transao T no sobrescreve o Dirty Data de uma outra
transao T
Transao T no consolida qualquer gravao at concluir
todas as suas tarefas
Transao T no faz a leitura do Dirty Data de outra
transao T
Qualquer outra transao no vai escrever Dirty Data
lidos pela transao T, antes da transao T ser finalizada.

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Isolamento
As atualizaes de uma transao em execuo no so
visveis para outras transaes, ou seja, as transaes
so isoladas uma das outras.

Banco de Dados II Processamento de


Transaes
Propriedades de uma transao
Durabilidade
Atualizaes de transaes efetivadas nunca devem ser
perdidas em caso de falha da transao.
A recuperao de um Banco de Dados denominada
de forward recovery.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Execues pode ser feitas de modo concorrente em um
SGBD.
necessrio manter a consistncia, pois os seguintes
problemas podem ocorrer:
Atualizao Perdida
Leitura Incorreta
Somatrio Incorreto

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Atualizao Perdida
Ocorre quando duas transaes (ao acessarem os
mesmos dados do Banco de Dados) geram um valor
incorreto de algum item de dado.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Atualizao Perdida
Transao 1

Transao 2

read_item(X)
X:=X-n
read_item(X)

X:=X+n
write_item(X)
read_item(Y)
Write_item(X)
Y:=Y-n
Write_item(Y)

A Transao 2 faz a
leitura do valor de
X antes da
Transao 1
realizar a sua
atualizao. O
valor atualizado de
X para a Transao
1 perdido.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Leitura Incorreta
Ocorre quando uma transao primeiro atualiza um
valor de um item de dado e logo em seguida h uma
falha. Aps isto o mesmo item de dado acessado por
outra transao antes de voltar a possuir o seu valor
original.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Leitura Incorreta
Transao 1

Transao 2

read_item(X)
X:=X-n
write_item(X)
read_item(X)
X:=X+n
Write_item(X)

read_item(Y)

A Transao 1 falha e
deve alterar o valor de X
para o seu valor anterior;
enquanto isso a
Transao 2 faz a leitura
do valor incorreto
temporrio de X e
executa a alterao.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Somatrio Incorreto
Ocorre quando uma transao est executando uma
soma de vrios itens de dados e neste mesmo perodo
outra transao est atualizando alguns destes itens de
dados.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Somatrio Incorreto
Transao 1

Transao 2

soma:=0
read_item(X)
soma:=soma + X
read_item(Y)

soma:=soma + Y
read_item(X)
X:=X+n
write_item(X)

read_item(Z)
soma:=soma+Z

A Transao 2 acessa,
altera e atualiza o valor
de X que usado nas
somas da transao 1,
logo o resultado de todas
as somas da transao 1
estar incorreto.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Soluo: Tcnicas de Controle de Concorrncia
Para controlar os diversos problemas que podem ser
gerados com o uso de Execues Concorrentes, temos
tcnicas que coordenam o acesso ao Banco de Dados.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Soluo: Tcnicas de Controle de Concorrncia
Na verdade usamos protocolos (um conjunto de regras)
que asseguram a seriabilidade dos escalonamentos
(escalonamentos serializveis), ou seja, qualquer
escalonamento no serial ser equivalente a um
escalonamento serial.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Principais Protocolos
Bloqueio de itens de dados
Multiverso
Otimista
Pr-ordenao

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Principais Protocolos
Bloqueio de itens de dados
Evita que vrias transaes acessem os itens de dados
de forma concorrente.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Principais Protocolos
Multiverso
Utiliza vrias verses (multiplas verses) dos itens de
dados

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Principais Protocolos
Otimista
Utiliza como critrio a validao (ou certificao) do
item de dado.

Banco de Dados II Processamento de


Transaes
Execues Concorrentes
Principais Protocolos
Pr-ordenao
A partir de um identificador gerado pelo sistema
(denominado timestamp) cada transao ordenada.
Assim a ordem de cada transao deve ser respeitada.
Exemplo: T1, T2, T3, T4,...

Banco de Dados II Processamento de


Transaes
Observaes
Em um BD podemos ter os seguintes tipos de falhas:
Falhas Catastrficas
Falhas que atuam diretamente em uma grande parte
do BD (ou at mesmo em todo o BD). So provenientes
de falhas nas formas de armazenamento do BD (discos
ou outras formas de armazenamento).

Banco de Dados II Processamento de


Transaes
Observaes
Em um BD podemos ter os seguintes tipos de falhas:
Falhas Catastrficas
Lembrando: Falhas nos discos so provenientes de
problemas na memria secundria, ou seja, problemas
fsicos nos discos. Ex.: Leitor de disco com defeito,
quebra de disco, etc...

Banco de Dados II Processamento de


Transaes
Observaes
Em um BD podemos ter os seguintes tipos de falhas:
Falhas No Catastrficas
Falhas que geram inconsistncias no BD. So
provenientes de falhas nas transaes e/ou falhas nos
sistemas.

Banco de Dados II Processamento de


Transaes
Observaes
Em um BD podemos ter os seguintes tipos de falhas:
Falhas No Catastrficas
Lembrando: Erro na transao ocorre quando uma
transao no finalizada com sucesso devido a erros,
tais como, leitura de um dado inexistente, valor de um
dado incorreto, etc...

Banco de Dados II Processamento de


Transaes
Observaes
Em um BD podemos ter os seguintes tipos de falhas:
Falhas No Catastrficas
Lembrando: Erros no sistema esto relacionados a
problemas na memria principal, tais como: bugs e/ou
erros no SGBD (Sistema Gerenciador do Banco de
Dados); bugs e/ou erros no Sistema Operacional
utilizado e at mesmo falhas na CPU.

Banco de Dados II Processamento de


Transaes
Estudo Orientado 1:
Entregar na Prxima Aula
Serializao
Recuperao

Banco de Dados II Controle de


Concorrncia
Sumrio
Controle de Concorrncia com base em :
Bloqueios
Timestamp
Validao
Granularidade, multiverso e deadlock

Banco de Dados II Controle de


Concorrncia
Para controlar os diversos problemas que podem ser
gerados com o uso de Execues Concorrentes, temos
tcnicas que fazem a coordenao do acesso ao Banco
de Dados.

Banco de Dados II Controle de


Concorrncia
Principais tcnicas para o Controle de Concorrncia:
Bloqueios
Timestramp
Validao
Multiverso

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Estas tcnicas so uma forma de sincronizar o acesso
aos itens do Banco de Dados quando h o uso de
Transaes Concorrentes.

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos, geralmente, um bloqueio* para cada item (de
dado) do Banco de Dados.

* Um bloqueio consiste em uma varivel que est ligada a um


determinado item de dado. Esta varivel descreve o status do
item em relao a possveis operaes que podem ser aplicadas
a ele.

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Binrio
Mltiplo

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Binrio
O Bloqueio Binrio possui 2 (dois) estados:
Bloqueado ou locked ou 1 (um);
Desbloqueado ou unlocked ou 0 (zero).

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Binrio
O Bloqueio Binrio possui duas operaes:
lock_item (X) bloqueia o item X;
unlock_item (X) debloqueia o item X.

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Binrio
O Bloqueio Binrio impe a excluso mtua no item de dado, ou seja:
Se uma operao de bloqueio ou desbloqueio (do item de dado X) for
inicializada, nenhuma outra transao executada at que a transao
inicial seja finalizada (ou que esta entre em um estado de espera).
Em caso de estado de espera, a transao entra em uma fila de espera
pelo item X at que este seja desbloqueado.

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Binrio
Exemplo de um algoritmo de bloqueio :
lock_item(X):
B: se LOCK(X) = 0 ento (*item desbloqueado*)
LOCK(X) 1 (*bloquear item*)
seno incio
esperar at (LOCK(X) = 0 e o gerenciador de bloqueio despertar a transao);
goto B;
fim;

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Binrio
Exemplo de um algoritmo de desbloqueio :
unlock_item(X):
LOCK(X) 0; (*desbloquear item*)
se alguma transao estiver esperando
ento despertar uma das transaes em espera;

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Binrio
Na utilizao da tcnica de Bloqueio Binrio, uma determinada
transao T deve seguir as regras determinadas abaixo:
T deve emitir um lock_item(X) antes que qualquer read_item(X) ou write_item(X) seja
executado;
T deve emitir um unlock_item(X) depois que todos os read_item(X) e write_item(X)
tenham sido completados em T;
T no poder emitir lock_item(X) se X estiver bloqueado por T;
T poder emitir unlock_item(X) apenas se X estiver bloqueado;

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Binrio
Observao: O Bloqueio Binrio o mecanismo mais simples do
controle de ocorrncia. Sua implementao basicamente possui:
comando de bloqueios, comandos de desbloqueios e lista de
espera.

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Mltiplo
O Bloqueio Mltiplo permite que um determinado item de dado seja
acessado (ao mesmo tempo) por mais de uma transao.
O Bloqueio Mltiplo possui as seguintes operaes:
Bloqueio Compartilhado: read_lock(X) bloqueia o item X para a leitura de uma
determinada transao, mas para outras transaes a leitura permitida;
Bloqueio Exclusivo: write_lock(X) bloqueia o item X para a escrita de uma determinada
transao, mantendo o bloqueio para outras transaes;
Desbloqueio: unlock(X) desbloqueia o item X.

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Mltiplo
O Bloqueio Mltiplo possui na sua implementao, basicamente,
comandos de bloqueios e lista de espera.

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Mltiplo
Exemplo de um algoritmo de Bloqueio (read_lock(X)):
read_lock(X):
B: se LOCK(X)=0 unlocked ento incio (*item desbloqueado*)
LOCK(X) read_locked; (*bloquear item para leitura*)
num_de_leituras(X)1;
fim
seno
se LOCK(X) = read_locked ento (*bloqueado para leitura*)
num_de _leituras(X)num_de_leituras(X)+1;
seno
incio
esperar at (LOCK(X)= unlocked e gerenciador de bloqueio despertar a transao;
goto B:
fim;

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Mltiplo
Exemplo de um algoritmo de Bloqueio (write_lock(X)):
write_lock(X):
B: se LOCK(X)=0 unlocked ento (*item desbloqueado*)
LOCK(X) write_locked; (*bloquear item para escrita*)
seno
incio
esperar at (LOCK(X)= unlocked e gerenciador de bloqueio despertar a transao;
goto B:
fim;

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Mltiplo
Exemplo de um algoritmo de Desbloqueio (Unlock(X)):
unlock(X):
B: se LOCK(X)=0 write_locked ento incio (*bloqueado para escrita*)
LOCK(X)unlocked; (*desbloquear item*)
despertar uma das transaes em espera, se ela existir;
fim;
seno
se LOCK(X) = read_locked ento inicio (*bloqueado para leitura*)
num_de_leituras(X) num_de_leituras(X) 1;
se num_de_leituras(X)=0 ento incio
LOCK(X) unlocked ; (*desbloquear item*)
despertar uma das transaes em espera, se ela existir;
fim;
Fim;

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Mltiplo
Na utilizao da tcnica de Bloqueio Mltiplo, uma determinada transao T
deve seguir as regras determinadas abaixo:
T deve emitir um read_lock(X) ou write_lock(X) antes que qualquer read_item(X)
seja executado;
T deve emitir um write_lock(X) antes que qualquer write_item(X) seja executado em
T;
T deve emitir um unlock(X) depois que todos os read_item(X) e write_item(X)
tenham sido executados em T;
T no emitir nenhum read_lock(X) ou write_lock(X) se X j estiver bloqueado por T
(de forma compartilhada ou exclusiva);
T poder emitir um unlock(X) apenas se X estiver bloqueado (de forma
compartilhada ou exclusiva).

Banco de Dados II Controle de


Concorrncia
Tcnicas com base em Bloqueios:
Temos 2 (dois) tipos de bloqueios:
Mltiplo
A tcnica de Bloqueio Mltiplo, entretanto, no garantia que os
escalonamentos sejam serializveis. Considere as transaes T1 e T2
abaixo:
Transao T1
Transao T2
read_lock(Y);
read_item(Y);
unlock(Y);
write_lock(X);
read_item(X);
X:= X+Y;
write_item(X);
unlock(X);

read_lock(X);
read_item(X);
unlock(X);
write_lock(Y);
read_item(Y);
Y:= X+Y;
write_item(Y);
unlock(Y);

Banco de Dados II Controle de


Concorrncia
Linha do tempo das transaes:
Transao T1

Transao T2

read_lock(Y);
read_item(Y);
unlock(Y);
read_lock(X);
read_item(X);
unlock(X);
write_lock(Y);
read_item(Y);
Y:= X+Y;
write_item(Y);
unlock(Y);
write_lock(X);
read_item(X);
X:= X+Y;
write_item(X);
unlock(X);

O item Y em T1
e X em T2
foram
desbloqueados
cedo demais,
permitindo um
escalonamento
noserializvel.

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
Para garantir que os escalonamentos sejam executados
de forma serializvel, as operaes de bloqueio e
desbloqueio devem seguir o protocolo de bloqueio em
duas fases (two-phase locking).

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
As operaes de bloqueio (read_lock e write_lock)
precedem a primeira operao de desbloqueio
(unlock).
Observao: As transaes so divididas em duas fases:
Expanso quando os bloqueios so emitidos;
Contrao quando os desbloqueios so emitidos e
nenhum novo bloqueio emitido.

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
Considere novamente as transaes T1 e T2:
Transao T1

Transao T2

read_lock(Y);
read_item(Y);
unlock(Y);
write_lock(X);
read_item(X);
X:= X+Y;
write_item(X);
unlock(X);

read_lock(X);
read_item(X);
unlock(X);
write_lock(Y);
read_item(Y);
Y:= X+Y;
write_item(Y);
unlock(Y);

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
Para se adequarem ao protocolo de Bloqueio em Duas
Fases as transaes T1 e T2 devem ser alteradas da
seguinte maneira:
Transao T1

Transao T2

read_lock(Y);
read_item(Y);
write_lock(X);
unlock(Y);
read_item(X);
X:= X+Y;
write_item(X);
unlock(X);

read_lock(X);
read_item(X);
write_lock(Y);
unlock(X);
read_item(Y);
Y:= X+Y;
write_item(Y);
unlock(Y);

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
Quando as transaes obedecem ao protocolo de
Bloqueio em Duas Fases, o escalonamento
serializvel.

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
Temos 3 (trs) variaes do protocolo de Bloqueio em
Duas Fases:
Conservador;
Estrito;
Rigoroso.

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
Temos 3 (trs) variaes do protocolo de Bloqueio em
Duas Fases:
Conservador: uma transao bloqueia todos os itens
que ter acesso, antes de iniciar o seu
processamento.
Se algum dos itens no puder ser bloqueado, a transao
no bloqueia outro nenhum item e espera at que todos os
itens estejam disponveis para o bloqueio.

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
Temos 3 (trs) variaes do protocolo de Bloqueio em
Duas Fases:
Estrito: uma transao no libera nenhum de seus
bloqueios exclusivos (write_lock) at que seja
confirmada (commit) ou abortada.

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
Temos 3 (trs) variaes do protocolo de Bloqueio em
Duas Fases:
Rigoroso: uma transao no libera nenhum de seus
bloqueios exclusivos (write_lock) ou compartilhados
(read_lock) at que seja confirmada (commit) ou
abortada.

Banco de Dados II Controle de


Concorrncia
Bloqueios em Duas Fases:
A utilizao de bloqueios pode levar a 2 (dois) tipos de
problemas:
Deadlock: bloqueio perptuo;
Starvation: espera indefinida.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Temos um deadlock quando as transaes de um
escalonamento aguardam por algum item que esteja
bloqueado por outra transao que pertence ao
escalonamento:
Transao T1

Transao T2

read_lock(Y);
read_item(Y);
read_lock(X);
read_item(X);
write_lock(X);
write_lock(Y);

T1 espera pelo item X


bloqueado por T2 e T2 espera
pelo item Y, bloqueado por T1:
as transaes T1 e T2 no
conseguem prosseguir e
nenhuma outra transao
consegue acessar os itens X e Y.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Existem protocolos e tcnicas para:
Prevenir a ocorrncia de deadlocks
Detectar deadlocks e tomam alguma ao para
acabar com o impasse.
Exemplo: Protocolo de bloqueio em duas fases
conservador.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Algumas tcnicas de preveno utilizam o conceito de
registro de timestamp da transao, que um
identificador nico atribudo a cada transao do
escalonamento.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Os registros de timestamp (TS) so baseados,
geralmente, na ordem em que as transaes so
inicializadas.
Exemplo:
Se T1 iniciado antes de T2, ento TS(T1) < TS (T2)
Observao: A transao mais antiga possui um valor
menor de TS do que o valor de TS de uma transao
mais atual.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Temos duas tcnicas de preveno de deadlock que
utilizam o conceito de registro de timestamp:
wait-die (esperar-morrer)
wound-wait (ferir-esperar)

Banco de Dados II Controle de


Concorrncia
Deadlock:
Considere a seguinte situao:
Em um determinado escalonamento, uma transao Ti
tenta bloquear um item X mas no consegue porque X
est bloqueado por uma transao TJ .

Banco de Dados II Controle de


Concorrncia
Deadlock:
wait-die
Se TS (Ti ) < (TJ), ou seja Ti mais antiga do que TJ . Ento Ti
autorizada a aguardar.
Se TS (Ti ) > (TJ), ou seja Ti mais nova do que TJ . Ento Ti
abortada e reiniciada posteriormente com o mesmo valor de
registro de timestamp.
Em tal esquema, verificamos que uma transao mais antiga
autorizada a aguardar por uma transao mais nova; ademais,
uma transao mais nova, que requeira um item bloqueado
por uma transao mais antiga, abortada e reiniciada.

Banco de Dados II Controle de


Concorrncia
Deadlock:
wound-wait
Se TS (Ti ) < (TJ), ou seja Ti mais antiga do que TJ . Ento TJ
abortada ( Ti fere TJ ) e reiniciada posteriormente com o
mesmo valor de registro de timestamp.
Se TS (Ti ) > (TJ), ou seja Ti mais nova do que TJ ,ento Ti
autorizada a esperar.
Em tal esquema, uma transao mais nova autorizada a
esperar pela mais antiga; ademais, uma transao mais
antiga, que requeira um item bloqueado por uma transao
mais nova, apropria-se da transao mais nova, abortando a
mesma.

Banco de Dados II Controle de


Concorrncia
Deadlock:
As duas tcnicas podem fazer com que transaes
sejam abortadas e reiniciadas sem necessidade, j que
no necessariamente geram um deadlock.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Uma tcnica de preveno, que no utiliza o conceito
de registro de timestamp, o algoritmo de espera
cautelosa:
Considerando a situao anterior, ou seja, Ti tenta
bloquear um item X que se encontra bloqueado pela
transao Tj, se Tj no estiver bloqueada (Tj no
estiver esperando por algum outro item bloqueado),
ento Ti bloqueada e autorizada a esperar; caso
contrrio, Ti abortada.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Na abordagem de deteco de deadlock, verificado se
um estado de deadlock existe de fato e, em caso
positivo, algumas transaes envolvidas so abortadas
para que o escalonamento possa prosseguir.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Na escolha de uma transao a ser abortada (seleo
da vtima), deve-se evitar selecionar transaes que
estejam sendo executadas por um longo perodo e que
tenham realizado muitas atualizaes.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Uma forma de se detectar um estado de deadlock
construir e manter um grafo de espera:
Um n criado no grafo de espera para cada
transao que esteja sendo executada no momento.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Uma forma de se detectar um estado de deadlock
construir e manter um grafo de espera:
Uma aresta direcionada (n Ti n Tj) criada no
grafo de espera sempre que uma transao Ti estiver
esperando para bloquear um item que esteja
bloqueado por uma transao Tj.
Quando Tj libera o bloqueio nos itens que Ti est
esperando, a aresta direcionada retirada do grafo
de espera.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Teremos um deadlock se, e somente se, o grafo de
espera possuir o formato de um formato circular, isto ,
se fechar um ciclo.

Banco de Dados II Controle de


Concorrncia
Deadlock:
Outra forma de se detectar um estado de deadlock
verificar o timeout (intervalo, limite de tempo) definido
pelo sistema.
Se uma transao espera por um perodo maior do
que o perodo de timeout definido, o sistema supe
que a transao pode estar em deadlock e aborta a
mesma, independentemente do fato do deadlock
existir ou no.

Banco de Dados II Controle de


Concorrncia
Estudo Orientado 2:
Entregar na Prxima Aula
Processamento e Otimizao de Consultas
Algoritmos bsicos
Estimativa de custo
Medidas de custo de uma consulta

Вам также может понравиться