Operações de Checkpoint serão o tema abordado neste post da série.
► Checkpoints
Caso nunca tenham sido gravadas as anotações de alterações efetuadas nos dados do banco no seu arquivo físico em disco, será necessário refazer todas as alterações desde o início da sessão Progress, quando uma falha ocorrer. Isto pode levar um tempo considerável, e jamais poderá ser reutilizado qualquer espaço do BI, já que os dados serão necessários em algum momento no futuro. Para evitar que isto aconteça, o gerenciador do banco de dados periodicamente sincroniza a parte em disco do banco de dados com a parte em memória. O processo de sincronização é chamado de “checkpoint” e é iniciado sempre que um cluster de BI é preenchido.
Durante a operação de checkpoint, são gravadas em disco as alterações efetuadas nos dados do banco que ainda estão somente na parte em memória. Estão incluídos nesta operação as estruturas da tabela de transações, todos os blocos do banco que estão no buffer pool e sofreram alteração, e algumas outras estruturas.
- Synchronous Checkpoints
Esta era a técnica utilizada até a versão 6.2. Nela nenhuma alteração ao banco de dados poderia acontecer enquanto o checkpoint estivesse em andamento. Caso o “buffer pool” do banco fosse grande, o cluster do BI também, e muitas alterações tivessem sido executadas, poderiam haver milhares de buffers de banco pendentes de escrita em disco. Isto poderia causar uma operação de recuperação bem longa. Por exemplo, assumindo que 5000 blocos tenham sido alterados e que seja possível gravar no disco 30 blocos por segundo. Gravar todos os blocos poderia ter levado em torno de 166 segundos.
- Fuzy Checkpoints
Após a versão 6.3, é utilizada a técnica assíncrona para a execução de checkpoints. Um checkpoint é iniciado quando um cluster é preenchido, mas não precisa estar concluído ao término da utilização do cluster corrente. O checkpoint(sincronização) ocorrerá sobre os buffers que sofreram alteração e estão registrados no cluster preenchido. Alterações no banco de dados continuam enquanto o checkpoint está em execução. Um ou mais processos “Assynchronous Page Writers(APWs)” podem efetuar em background as gravações das alterações que estão registradas em memória, no arquivo do banco em disco. Enquanto isto os processos server do banco continuam atendendo normalmente as requisições dos usuários.
Supondo que os processos APW consigam concluir o chekcpoint antes do cluster corrente também estar preenchido, apenas um número pequeno de gravações de buffers do banco serão necessárias no momento em que o cluster for fechado. Caso ainda existam buffers marcados para serem gravados em disco no momento de iniciar o próximo checkpoint, então todos serão gravados antes de abrir o outro cluster.
No próximo post será abordada a técnica de alocação de espaço no BI.