Uppskjuten uppdatering kontra omedelbar uppdatering
Uppskjuten uppdatering och omedelbar uppdatering är två tekniker som används för att underhålla transaktionsloggfiler för databashanteringssystem (DBMS). Transaktionslogg (även kallad journalloggen eller redo-loggen) är en fysisk fil som lagrar Transaktions-ID, transaktionens tidsstämpel, det gamla värdet och de nya värdena för datan. Detta gör att DBMS kan hålla reda på data före och efter varje transaktion. När transaktionerna är genomförda och databasen återställs till ett konsekvent tillstånd, kan loggen trunkeras för att ta bort de genomförda transaktionerna.
Uppskjuten uppdatering
Uppskjuten uppdatering, även kallad NO-UNDO/REDO, är en teknik som används för att återställa/stödja transaktionsfel som uppstår på grund av operativsystem-, ström-, minnes- eller maskinfel. När en transaktion körs görs inte uppdateringar eller ändringar i databasen av transaktionen omedelbart. De registreras i loggfilen. Dataändringar som registreras i loggfilen tillämpas på databasen vid commit. Denna process kallas "Re-doing". Vid återställning kasseras alla ändringar av data som registrerats i loggfilen; därför kommer inga ändringar att tillämpas på databasen. Om en transaktion misslyckas och den inte genomförs på grund av någon av de ovan nämnda orsakerna, kasseras posterna i loggfilen och transaktionen startas om. Om ändringarna i en transaktion genomförs innan den kraschar, kommer ändringar som registrerats i loggfilen att tillämpas på databasen efter att systemet startats om.
Omedelbar uppdatering
Omedelbar uppdatering, även kallad UNDO/REDO, är också en annan teknik som används för att återställa/stödja transaktionsfel som uppstår på grund av operativsystem-, ström-, minnes- eller maskinfel. När en transaktion körs skrivs alla uppdateringar eller ändringar som transaktionen gör direkt in i databasen. Både de ursprungliga värdena och de nya värdena registreras också i loggfilen innan ändringar görs i databasen. Vid commit görs alla ändringar som görs i databasen permanenta och posterna i loggfilen kasseras. Vid återställning återställs gamla värden i databasen med de gamla värdena som lagrats i loggfilen. Alla ändringar som görs av transaktioner till databasen kasseras och denna process kallas "Un-doing". När systemet startar om efter en krasch görs alla databasändringar permanenta för genomförda transaktioner. För ej genomförda transaktioner återställs ursprungliga värden med värdena i loggfilen.
Vad är skillnaden mellan uppskjuten uppdatering och omedelbar uppdatering
Även om uppskjuten uppdatering och omedelbar uppdatering är två metoder för att återställa efter ett systemfel, är processen som varje metod använder olika. I en annan uppdateringsmetod registreras alla ändringar som görs av data av en transaktion först i en loggfil och appliceras på databasen vid commit. I metoden för omedelbar uppdatering tillämpas ändringar som görs av en transaktion direkt på databasen och gamla värden och nya värden registreras i loggfilen. Dessa poster används för att återställa gamla värden vid återställning. I en annan uppdateringsmetod kasseras poster i loggfilen vid återställning och tillämpas aldrig på databasen. En nackdel med metoden för uppskjuten uppdatering är den ökade tiden det tar att återställa i händelse av ett systemfel. Å andra sidan är frekventa I/O-operationer medan transaktionen är aktiv, en nackdel med omedelbar uppdatering.