Como consequência disso, todas as transações que têm suas entradas <commit, T> no log antes de uma entrada <checkpoint> não precisam ter suas operações WRITE refeitas no caso de uma falha do sistema, pois todas as suas atualizações serão registradas no banco de dados em disco durante o checkpoint.
Como parte do checkpoint, a lista de ids de transação para transações ativas no momento do checkpoint é incluída no registro do checkpoint, de modo que essas transações possam ser facilmente identificadas durante a recuperação.
O gerenciador de recuperação de um SGBD precisa decidir em que intervalos realizar um checkpoint. O intervalo pode ser medido em tempo, digamos, a cada m minutos, ou no número t de transações confirmadas desde o último checkpoint, em que os valores de m ou t são parâmetros do sistema.
Realizar um checkpoint consiste nas seguintes ações:
| Suspender a execução de transações temporariamente | Forçar a gravação em disco de todos os buffers da memória principal que foram modificados. | Gravar um registro (checkpoint no log) e forçar a gravação do log em disco. | Retomar a execução das transações. |
|---|