Basis van databases
Er zijn transacties T1 tot T5, en vóór een storing is één checkpoint genomen. T1 is vóór het checkpoint begonnen en gecommit. T2 en T3 zijn vóór het checkpoint begonnen; T2 is na het checkpoint maar vóór de storing gecommit, en T3 was op het moment van de storing niet gecommit. T4 en T5 zijn na het checkpoint begonnen; T4 is vóór de storing gecommit, en T5 was niet gecommit. Welke transacties moeten bij het herstel na de storing met de log een rollforward krijgen?
- AT3 en T5
- BT1, T2 en T4
- CT2 en T4
Antwoord en toelichting tonen
Antwoord: C. T2 en T4
Bij een checkpoint worden de databasepagina's die tot dat moment in het geheugen zijn gewijzigd naar de opslag geschreven, en dat wordt in de log vastgelegd. De wijzigingen van T1, dat vóór het checkpoint is gecommit, staan daarom al in de database en vergen geen herstel. T2 en T4, die na het checkpoint maar vóór de storing zijn gecommit, hebben hun commit voltooid, maar een deel van hun wijzigingen is mogelijk nog niet naar de database geschreven, dus die worden met de waarden na de wijziging uit de log opnieuw uitgevoerd (rollforward). Bij T3 en T5, die op het moment van de storing niet waren gecommit, worden eventuele gedeeltelijke wijzigingen in de database met de waarden van vóór de wijziging uit de log ongedaan gemaakt (rollback). Ook een transactie die vóór het checkpoint begon, zoals T3, wordt ongedaan gemaakt als ze niet was gecommit. Checkpoints maken het herstel korter, omdat de log niet vanaf het allereerste begin hoeft te worden doorlopen.