Como funciona o arquivo primário de recuperação (BI) – parte 3

Escrito por Nilson Nestor Wolfgramm em 2 de março de 2009, 17:32h

Retomando a série de posts sobre o funcionamento do arquivo primário de recuperação, neste post serão abordados os assuntos “Transaction Undo” e “Crash Recovery”.

► Transaction Undo

Para desfazer uma transação ativa, o gerenciador do banco lê, em ordem reversa, todas as anotações por ela geradas no arquivo de BI, até o seu início. Os efeitos de cada transação são revertidos, e os valores originais são restaurados. Note que a medida que as alterações são desfeitas, o banco de dados sofre alterações novamente. Estas novas alterações também são anotadas, gerando informações adicionais no BI.

► Crash Recovery

Quando uma falha de banco ocorre, a parte do banco que está em memória é perdida e a parte em disco acaba ficando em um “estado desconhecido”. Algumas alterações do banco podem ter sido escritas no arquivo em disco, e outras podem ter ficado bufferizadas e, portanto, perdidas no momento da falha. Uma ou mais transações podiam estar em execução e não terem sido concluídas.

Durante o processo de recuperação, a parte do banco que estava bufferizada, mais a parte que estava em disco, são reconstruídas mediante a leitura das anotações do arquivo de BI. Isto acontece ao refazer (redo) as alterações que não foram gravadas nos arquivos do banco em disco. Isto é possível porque o gerenciador do banco usa a técnica “write-ahead logging”.

Uma vez que o banco foi reconstruído até o ponto em que ocorreu a falha, toda transação que estava ativa naquela ponto é desfeita da mesma forma que é feito no “undo” de uma transação interrrompida pelo usuário. Quando este processo é concluído, o banco estará novamente em um estado consistente.

É importante ressaltar que o gerenciador do banco executa “crash recovery” a cada vez que o banco é aberto, porém nem sempre todas as fases de recuperação são anotadas no arquivo de mensagens do banco(banco.lg). Por exemplo, o gerenciador do banco executa o Redo sempre, porém a fase de Undo é executada apenas quando houver transações pendentes registradas.

Para o próximo post da série será abordado o tema “Checkpoints” e suas variações.

Categorias: Banco de dados | Progress

Tags: , , ,

Comentar




biuquote
  • Comentário
  • Pré-visualização
Loading


Acesso LogMeIn

Informe o código PIN: