Utsatt oppdatering kontra umiddelbar oppdatering
Utsatt oppdatering og umiddelbar oppdatering er to teknikker som brukes til å vedlikeholde transaksjonsloggfiler for Database Management Systems (DBMS). Transaksjonslogg (også referert til som journalloggen eller redo-loggen) er en fysisk fil som lagrer transaksjons-IDen, tidsstemplet for transaksjonen, den gamle verdien og de nye verdiene til dataene. Dette gjør at DBMS kan holde styr på dataene før og etter hver transaksjon. Når transaksjonene er forpliktet og databasen returneres til en konsistent tilstand, kan loggen avkortes for å fjerne de forpliktede transaksjonene.
Utsatt oppdatering
Utsatt oppdatering også k alt NO-UNDO/REDO er en teknikk som brukes til å gjenopprette/støtte transaksjonsfeil som oppstår på grunn av operativsystem-, strøm-, minne- eller maskinfeil. Når en transaksjon kjører, gjøres ikke oppdateringer eller endringer gjort i databasen av transaksjonen umiddelbart. De registreres i loggfilen. Dataendringer registrert i loggfilen brukes på databasen ved commit. Denne prosessen kalles "Re-doing". Ved tilbakerulling forkastes eventuelle endringer i data som er registrert i loggfilen; derfor vil ingen endringer bli brukt på databasen. Hvis en transaksjon mislykkes og den ikke blir utført på grunn av noen av årsakene nevnt ovenfor, forkastes postene i loggfilen og transaksjonen startes på nytt. Hvis endringene i en transaksjon utføres før den krasjer, vil endringer som er registrert i loggfilen bli brukt på databasen etter at systemet starter på nytt.
Umiddelbar oppdatering
Umiddelbar oppdatering også k alt UNDO/REDO, er også en annen teknikk som brukes til å gjenopprette/støtte transaksjonsfeil som oppstår på grunn av operativsystem-, strøm-, minne- eller maskinfeil. Når en transaksjon kjører, blir alle oppdateringene eller endringene gjort av transaksjonen skrevet direkte inn i databasen. Både de opprinnelige verdiene og de nye verdiene registreres også i loggfilen før endringer i databasen. Ved commit blir alle endringer som gjøres i databasen gjort permanente og postene i loggfilen blir forkastet. Ved tilbakeføring gjenopprettes gamle verdier i databasen ved å bruke de gamle verdiene som er lagret i loggfilen. Alle endringer som gjøres av transaksjoner til databasen, forkastes og denne prosessen kalles "Un-doing". Når systemet starter på nytt etter en krasj, gjøres alle databaseendringene permanente for begåtte transaksjoner. For ikke-forpliktede transaksjoner gjenopprettes opprinnelige verdier ved å bruke verdiene i loggfilen.
Hva er forskjellen mellom utsatt oppdatering og umiddelbar oppdatering
Selv om utsatt oppdatering og umiddelbar oppdatering er to metoder for å gjenopprette etter en systemfeil, er prosessen som hver metode bruker forskjellig. I forskjellig oppdateringsmetode blir alle endringer som gjøres i dataene ved en transaksjon først registrert i en loggfil og brukt på databasen ved commit. I metoden for umiddelbar oppdatering blir endringer gjort av en transaksjon direkte brukt på databasen, og gamle verdier og nye verdier blir registrert i loggfilen. Disse postene brukes til å gjenopprette gamle verdier ved tilbakeføring. I forskjellig oppdateringsmetode blir poster i loggfilen forkastet ved tilbakeføring og blir aldri brukt på databasen. En ulempe med utsatt oppdateringsmetode er den økte tiden det tar å gjenopprette i tilfelle systemfeil. På den annen side er hyppige I/O-operasjoner mens transaksjonen er aktiv, en ulempe ved umiddelbar oppdatering.