Uitgestelde update versus onmiddellijke update
Deferred Update en Immediate Update zijn twee technieken die worden gebruikt om transactielogbestanden van Database Management Systems (DBMS) te onderhouden. Transactielogboek (ook wel het journaallogboek of het redo-logboek genoemd) is een fysiek bestand dat de transactie-ID, het tijdstempel van de transactie, de oude waarde en de nieuwe waarden van de gegevens opslaat. Hierdoor kan het DBMS de gegevens voor en na elke transactie bijhouden. Wanneer de transacties zijn vastgelegd en de database wordt teruggebracht naar een consistente status, kan het logboek worden afgekapt om de vastgelegde transacties te verwijderen.
Uitgestelde update
Uitgestelde update, ook wel NO-UNDO/REDO genoemd, is een techniek die wordt gebruikt om transactiefouten te herstellen/ondersteunen die optreden als gevolg van besturingssysteem-, stroom-, geheugen- of machinefouten. Wanneer een transactie wordt uitgevoerd, worden eventuele updates of wijzigingen die door de transactie in de database zijn aangebracht, niet onmiddellijk uitgevoerd. Ze worden vastgelegd in het logbestand. Gegevenswijzigingen die in het logbestand zijn vastgelegd, worden bij het vastleggen toegepast op de database. Dit proces wordt "opnieuw doen" genoemd. Bij terugdraaien worden alle wijzigingen in gegevens die in het logbestand zijn vastgelegd, genegeerd; daarom worden er geen wijzigingen toegepast op de database. Als een transactie mislukt en deze niet wordt uitgevoerd vanwege een van de bovengenoemde redenen, worden de records in het logbestand verwijderd en wordt de transactie opnieuw gestart. Als de wijzigingen in een transactie zijn vastgelegd voordat het crasht, worden de wijzigingen die in het logbestand zijn vastgelegd, nadat het systeem opnieuw is opgestart, toegepast op de database.
Onmiddellijke update
Onmiddellijke update, ook wel UNDO/REDO genoemd, is ook een andere techniek die wordt gebruikt om transactiefouten te herstellen/ondersteunen die optreden als gevolg van besturingssysteem-, stroom-, geheugen- of machinefouten. Wanneer een transactie wordt uitgevoerd, worden alle updates of wijzigingen die door de transactie zijn aangebracht, rechtstreeks in de database geschreven. Zowel de oorspronkelijke waarden als de nieuwe waarden worden ook vastgelegd in het logbestand voordat er wijzigingen in de database worden aangebracht. Bij het vastleggen worden alle wijzigingen in de database permanent gemaakt en worden de records in het logbestand verwijderd. Bij het terugdraaien worden oude waarden in de database hersteld met behulp van de oude waarden die in het logbestand zijn opgeslagen. Alle wijzigingen die door transacties in de database zijn aangebracht, worden genegeerd en dit proces wordt "Ongedaan maken" genoemd. Wanneer het systeem opnieuw opstart na een crash, worden alle databasewijzigingen permanent gemaakt voor vastgelegde transacties. Voor niet-vastgelegde transacties worden de oorspronkelijke waarden hersteld met behulp van de waarden in het logbestand.
Wat is het verschil tussen uitgestelde update en onmiddellijke update
Hoewel Uitgestelde Update en Onmiddellijke Update twee methoden zijn om te herstellen na een systeemfout, is het proces dat elke methode gebruikt anders. Bij een andere updatemethode worden alle wijzigingen die door een transactie in de gegevens worden aangebracht, eerst vastgelegd in een logbestand en bij het vastleggen toegepast op de database. Bij de directe update-methode worden wijzigingen die door een transactie zijn aangebracht direct toegepast op de database en worden oude waarden en nieuwe waarden vastgelegd in het logbestand. Deze records worden gebruikt om oude waarden bij terugdraaien te herstellen. Bij een andere updatemethode worden records in het logbestand bij het terugdraaien verwijderd en nooit toegepast op de database. Een nadeel van de uitgestelde update-methode is de langere hersteltijd in geval van een systeemstoring. Aan de andere kant is frequente I/O-bewerkingen terwijl de transactie actief is, een nadeel bij de methode voor onmiddellijke update.