Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Processamento de Consultas 2 Introduo a Transaes 3 Recuperao de Falhas 4 Controle de Concorrncia 5 SQL Embutida 6 Banco de Dados Distribudo
Recuperao de Falhas
Garantia de atomicidade e durabilidade de Transaes
requer um SGBD tolerante a falhas
Subsistema de Recovery
Controles
durante o funcionamento normal do SGBD
manter informaes sobre o que foi atualizado no BD pelas transaes realizar cpias peridicas do BD
Global UNDO
uma ou mais transaes no concluram as suas operaes as modificaes realizadas por todas estas transaes no BD so desfeitas
Partial REDO
na ocorrncia de uma falha, algumas transaes podem ter concludo suas operaes (committed), mas suas aes podem no ter se refletido no BD as modificaes realizadas por estas transaes so refeitas no BD
Global REDO
no caso de um comprometimento do BD, todas as transaes committed no BD so perdidas as modificaes realizadas por todas estas transaes no BD so refeitas
Tipos de Falhas
Falha de Transao
uma transao ativa termina de forma anormal causas
violao de RI, lgica da transao mal definida, deadlock, cancelamento pelo usurio, ...
no compromete a memria principal e a memria secundria (disco, em geral) falha com maior probabilidade de ocorrncia seu tempo de recuperao pequeno
ao: Transaction UNDO
Tipos de Falhas
Falha de sistema
o SGBD encerra a sua execuo de forma anormal causas
interrupo de energia, falha no SO, erro interno no SW do SGBD, falha de HW, ...
compromete a memria principal e no compromete o disco falha com probabilidade mdia de ocorrncia seu tempo de recuperao mdio
aes: Global UNDO e Partial REDO
Tipos de Falhas
Falha de meio de armazenamento
o BD torna-se total ou parcialmente inacessvel causas
setores corrompidos no disco, falha no cabeote de leitura/gravao, ...
no compromete a memria principal e compromete o disco falha com menor probabilidade de ocorrncia seu tempo de recuperao grande
ao: Global REDO
Tcnicas de Recovery
Baseadas em Log
modificao imediata do BD
tcnica UNDO/REDO tcnica UNDO/NO-REDO
recuperao de falhas de transao e de sistema
modificao postergada do BD
tcnica NO-UNDO/REDO
mantido em uma ou mais cpias em memria secundria (disco, fita, ...) tipos de log
log de UNDO
mantm apenas o valor antigo do dado (before image)
log de REDO
mantm apenas o valor atualizado do dado (after image)
Exemplo de Log
Log <start T3> <write T3,B,15,12> <start T2> <write T2,B,12,18> <start T1> <write T1,D,20,25> <commit T1> <write T2,D,25,26> <write T3,A,10,19> <commit T3> <commit T2> ... T1
read(A) read(D) write(D)
T2
read(B) write(B) read(D) write(D)
T3
read(C) write(B) read(A) write(A)
A indicao do tipo de operao facilita o entendimento do que deve ser UNDO ou REDO no BD
Gerenciamento de Buffer
Buffer
conjunto de blocos da memria principal
considera-se bloco e pgina conceitos sinnimos
Gerenciamento de Buffer
proc. de transaes BD read / write
controle do SGBD
dados (cache)
backup(s) do BD
Log
Log
...
buffers de memria
archive
backup(s) do Log
Gerenciamento de Buffer
Tcnicas de recovery devem sincronizar os buffers de log e de dados
princpio bsico
um bloco atualizado na cache s pode ser gravado no BD aps o histrico dos dados atualizados neste bloco ter sido gravado no Log em disco
Write-Ahead-Log (WAL)
uma transao Tx s pode passar para o estado efetivada (committed) aps todas as suas atualizaes terem sido gravadas no BD segundo o princpio WAL
STEAL
um bloco na cache utilizado por uma transao Tx pode ser gravado antes do commit de Tx
necessrio se algum dado requisitado do BD por outra transao e no h blocos disponveis na cache o bloco vtima escolhido atravs de alguma tcnica de SO
LRU, FIFO, ...
vantagem: garante a durabilidade de Tx o mais cedo possvel - permite o REDO de Tx em caso de falha
NOT-FORCE
os blocos que mantm dados atualizados por Tx no so imediatamente gravados no BD quando Tx alcana o commit vantagem: blocos atualizados podem permanecer na cache e serem utilizados por outras transaes, aps o commit de Tx (reduz custo de acesso a disco)
Exerccio 1
a) Considere o Log abaixo aps a ocorrncia de uma falha de sistema. Apresente os valores resultantes dos dados A e B para cada alternativa de execuo de operaes UNDO e REDO proposta abaixo. Qual das alternativas mantm o BD consistente?
<start T3> <start T4> <write T4,A,17,20> <write T3,B,15,12> <start T2> <commit T4> <write T2,B,12,18> <start T1> <write T1,A,20,25> <commit T1> <write T2,A,25,26> a) b) c) d) UNDO de T2 e T3 + REDO de T1 e T4 ? UNDO de T2 e T3 + REDO de T1 e T4 ? 1a passada: UNDO de T2 e T3 ? ; 2a passada: REDO de T1 e T4 ? 1a passada: UNDO de T2 e T3 ? ; 2a passada: REDO de T1 e T4 ?
Observaes: 1) ? significa varredura forward do Log 2) ? significa varredura backward do Log
b)
Qual das seguintes combinaes de tcnicas de gerenciamento de buffer requer um gerenciamento mais complexo por parte do SGBD?
a) b) STEAL + NOT-FORCE NOT-STEAL + FORCE
Modificao Imediata do BD
Abordagem na qual dados atualizados por uma transao Tx podem ser gravados no BD antes do commit de Tx Abordagem mais comum de recovery
gerenciamento de buffer mais simples
utiliza tcnica STEAL
Duas tcnicas
UNDO/REDO
tcnica mais comum de recovery
UNDO/NO-REDO
Tcnica UNDO/REDO
Grava o commit de Tx no Log depois de todas as atualizaes de Tx terem sido gravadas no Log, e antes dessas atualizaes serem gravadas no BD
requer um Log de UNDO/REDO lista-REDO: IDs de transaes committed
possuem commit gravado no Log
Procedimento
1. faz uma varredura backward do Log, realizando UNDO das transaes na lista-UNDO 2. faz uma varredura forward do Log, realizando REDO das transaes na lista-REDO
10
T1 T2 T3 T4 T5
falha (crash) lista-UNDO: T3, T5 (devem sofrer UNDO) lista-REDO: T1, T2, T4 (devem sofrer REDO)
Tcnica UNDO/REDO
A propriedade de idempotncia de operaes UNDO e REDO vlida
fazer UNDO ou REDO uma vez ou vrias vezes produz o mesmo resultado
situaes em que ocorrem falhas durante o processo de recovery
11
Exerccio 2
a) Na tcnica UNDO/REDO, suponha que uma varredura inicial seja feita no Log para montar a lista-UNDO e a lista-REDO, antes da realizao das varreduras backward e forward. Proponha algoritmos de alto nvel para definir essas listas atravs de:
i. Uma varredura backward do Log; ii. Uma varredura forward do Log Qual algoritmo apresenta menor complexidade?
b)
No item anterior, a complexidade do algoritmo UNDO/REDO O(3nLog), pois 3 varreduras so realizadas no Log. Proponha um algoritmo que resolva o problema em O(2nLog), ou seja, realize apenas 2 varreduras no Log
Tcnica UNDO/REDO
Quando se percorre o Log forward para fazer REDO, possvel que um dado X tenha sido atualizado por mais de uma transao committed Variante da tcnica UNDO/REDO
detectar que X atualizado mais de uma vez e realizar apenas a ltima atualizao
tcnica UNDO/REDO com REDO nico para cada dado na varredura backward do Log para fazer UNDO, quando for encontrada a primeira atualizao de um dado X por uma transao committed, inclui-se X e sua afterImage na listaREDO-dados
novas atualizaes de X feitas por transaes committed que forem encontradas so ignoradas
estratgia
12