Rollback – até que ponto?

Quando necessitamos de fazer rollback a questão que se coloca é:

  • Até que ponto do transaction log devemos recuar?

  • Deverá ser o momento em que o transaction log e a base de dados estão sincronizados.

    • Só a partir desse ponto é que nos interessa refazer as transações.

Solução segura: último backup!

  • Operação lenta ...

  • ... pois pode ser um momento muito recuado o que obrigará a um grande esforço pois temos de refazer todos as transação até ao momento da falha!!!

Solução baseada em Chekpoint

  • Marca no transaction log que identifica o momento em que os buffers são escritos para disco.

  • Ponto de sincronismo (em disco) entre o transaction log e a BD

Checkpoint

São fundamentais para limitar a amplitude dos processos de rollback e rollforward.

  • Tn4 não é recuperável

  • Tn2 e Tn3 são refeitas: primeiro são desfeitas (rollbacked) e depois executadas novamente (rollforward)

  • Tn e Tn1 não necessitam de intervenção

Savepoint

Alguns sistemas suportam Savepoint numa transação.

  • Permite reconstruir a transação até esses pontos

Savepoint versus Commit

  • Savepoint é interno à transação

  • Commit efetiva (BD) as operações e torna-as visíveis para outras

BEGIN TRANSACTION
    ...
    Save Point X
    ...
    Save Point Y
    ...
END TRANSACTION

Last updated