Recuperação e Registro (Logging)
Os mecanismos de recuperação e registro garantem a atomicidade e a durabilidade das transações, registrando as alterações em um log para que, após uma falha, o trabalho confirmado possa ser refeito e o trabalho não confirmado desfeito.
Definition
A recuperação de banco de dados é o processo de restaurar o banco de dados para um estado consistente após uma falha, garantindo que os efeitos das transações confirmadas sejam duráveis e que as transações abortadas ou em andamento não deixem rastros; o registro (logging) é a técnica de registrar as ações da transação em um log durável para tornar isso possível.
Scope
Este tópico aborda como um banco de dados sobrevive a falhas: o protocolo de registro antecipado (WAL), informações de desfazer (undo) e refazer (redo), pontos de verificação (checkpoints) para limitar o trabalho de recuperação e o algoritmo de recuperação padrão (notadamente ARIES) com suas passagens de análise, refazer e desfazer. Ele trata das políticas de gerenciamento de buffer (steal/no-steal, force/no-force) que determinam qual registro é necessário. Exclui os protocolos de controle de concorrência que são executados durante a operação normal e o commit distribuído, que são tópicos adjacentes.
Core questions
- Por que o registro (log record) deve atingir o armazenamento durável antes dos dados que descreve (registro antecipado - write-ahead logging)?
- Como o desfazer (undo) e o refazer (redo) restauram um estado consistente após uma falha?
- Como as políticas de gerenciamento de buffer (steal/force) determinam os requisitos de registro?
- Que papel os pontos de verificação (checkpoints) desempenham na limitação do tempo de recuperação?
- Como o algoritmo ARIES estrutura a recuperação em análise, refazer e desfazer?
Key concepts
- registro antecipado (WAL)
- registro de desfazer (undo) e refazer (redo)
- número de sequência de log
- pontos de verificação (checkpoints)
- políticas steal/no-steal e force/no-force
- registros de log de compensação
- passagens de análise, refazer, desfazer
- ARIES
Key theories
- Registro antecipado (Write-ahead logging)
- O protocolo WAL exige que os registros de log que descrevem uma alteração sejam forçados para o armazenamento estável antes da página de dados correspondente, garantindo que, após uma falha, o sistema tenha informações suficientes para desfazer alterações não confirmadas e refazer alterações confirmadas.
- Recuperação de desfazer/refazer e políticas de buffer
- Se o sistema precisa de desfazer (undo), refazer (redo) ou ambos, depende das políticas de buffer: uma política 'steal' (escrever páginas não confirmadas no disco) requer desfazer, e uma política 'no-force' (não forçar páginas confirmadas no commit) requer refazer; a combinação comum 'steal/no-force' requer ambos.
- ARIES
- ARIES é o método de recuperação amplamente adotado que usa registro antecipado (write-ahead logging), números de sequência de log e um algoritmo de três passagens (análise, refazer, desfazer) com registros de log de compensação para suportar bloqueio de granularidade fina e rollbacks parciais.
Clinical relevance
A recuperação e o registro são o que tornam a durabilidade real: eles garantem que, uma vez que um sistema confirma uma transação, como um pagamento ou pedido, esse fato sobreviva a perdas de energia e falhas, e que uma falha no meio da transação nunca deixe o banco de dados em um estado inconsistente e parcialmente atualizado.
History
A pesquisa de Härder e Reuter de 1983 estabeleceu os princípios da recuperação orientada a transações e a taxonomia da política de buffer. O ARIES, desenvolvido por C. Mohan e colegas na IBM e publicado em 1992, tornou-se o algoritmo de recuperação de fato padrão, combinando o registro antecipado (write-ahead logging) com números de sequência de log e registros de compensação para suportar bloqueio de granularidade fina.
Key figures
- C. Mohan
- Jim Gray
- Theo Härder
- Andreas Reuter
Related topics
Seminal works
- mohan1992
- haerder1983
- gray1992
Frequently asked questions
- Por que o registro antecipado (write-ahead logging) é necessário?
- Porque o banco de dados pode gravar uma página modificada no disco antes que a transação seja confirmada, ou manter uma página confirmada na memória no momento da falha. Forçar o registro de log antes da página de dados garante que, independentemente do que o gerenciador de buffer tenha feito, a recuperação tenha informações suficientes para desfazer alterações não confirmadas e refazer as confirmadas para atingir um estado consistente.
- O que os pontos de verificação (checkpoints) realizam?
- Um ponto de verificação registra periodicamente quais transações estão ativas e descarrega a contabilidade para o log, dando à recuperação um ponto de partida recente e conhecido como bom. Sem pontos de verificação, a recuperação pode ter que escanear todo o log desde o início; os pontos de verificação limitam o quão longe a recuperação deve processar, mantendo o tempo de reinício gerenciável.