Transactional Information Systems:

Slides:



Advertisements
Similar presentations
Informationssysteme SS Kapitel 16: Daten-Recovery – Wie Systemausfälle behandelt werden Fehlerkategorien: 1.Fehler im Anwendungsprogramm 2.Ausfall.
Advertisements

Transaction Management: Crash Recovery, part 2 CS634 Class 21, Apr 23, 2014 Slides based on “Database Management Systems” 3 rd ed, Ramakrishnan and Gehrke.
1 CPS216: Data-intensive Computing Systems Failure Recovery Shivnath Babu.
CS 440 Database Management Systems Lecture 10: Transaction Management - Recovery 1.
Jianlin Feng School of Software SUN YAT-SEN UNIVERSITY
Database Management Systems, 3ed, R. Ramakrishnan and J. Gehrke 1 Crash Recovery Chapter 18.
Crash Recovery R&G - Chapter 18.
Transactions and Recovery Checkpointing Souhad Daraghma.
Universität Karlsruhe (TH) © 2006 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 8 Chapter 8 Transaction Recovery.
Crash Recovery, Part 1 If you are going to be in the logging business, one of the things that you have to do is to learn about heavy equipment. Robert.
1 Crash Recovery Chapter Review: The ACID properties  A  A tomicity: All actions of the Xact happen, or none happen.  C  C onsistency: If each.
Introduction to Database Systems1 Logging and Recovery CC Lecture 2.
1 Crash Recovery Chapter Review: The ACID properties  A  A tomicity: All actions in the Xact happen, or none happen.  C  C onsistency: If each.
COMP9315: Database System Implementation 1 Crash Recovery Chapter 18 (3 rd Edition)
Chapter 20: Recovery. 421B: Database Systems - Recovery 2 Failure Types q Transaction Failures: local recovery q System Failure: Global recovery I Main.
Database Management Systems, 2 nd Edition. R. Ramakrishnan and J. Gehrke 1 Crash Recovery Chapter 20 If you are going to be in the logging business, one.
ICS 421 Spring 2010 Transactions & Recovery Asst. Prof. Lipyeow Lim Information & Computer Science Department University of Hawaii at Manoa 3/4/20101Lipyeow.
Universität Karlsruhe (TH) © 2007 Univ,Karlsruhe, IPD, Prof. Lockemann/Prof. BöhmTAV 8 Chapter 8 Transaction Recovery.
Recovery 10/18/05. Implementing atomicity Note, when a transaction commits, the portion of the system implementing durability ensures the transaction’s.
6/18/2015Transactional Information Systems15-1 Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery.
1 Anna Östlin Pagh and Rasmus Pagh IT University of Copenhagen Advanced Database Technology March 25, 2004 SYSTEM FAILURES Lecture based on [GUW ,
Database Management Systems 1 Logging and Recovery If you are going to be in the logging business, one of the things that you have to do is to learn about.
Chapter 19 Database Recovery Techniques. Slide Chapter 19 Outline Databases Recovery 1. Purpose of Database Recovery 2. Types of Failure 3. Transaction.
6/25/2015Transactional Information Systems7-1 Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery.
1 Implementing Atomicity and Durability Chapter 25.
1 CS 541 Database Systems Implementation of Undo- Redo.
Database Recovery – Heisenbugs, Houdini’s Tricks, and the Paranoia of Science Gerhard Weikum (Rationale,
DatabaseSystems/COMP4910/Spring03/Melikyan1 Crash Recovery.
DURABILITY OF TRANSACTIONS AND CRASH RECOVERY These are mostly the slides of your textbook !
Motivation for Recovery Atomicity: –Transactions may abort (“Rollback”). Durability: –What if DBMS stops running? (Causes?) crash! v Desired Behavior after.
Implementation of Database Systems, Jarek Gryz 1 Crash Recovery Chapter 18.
1 Logging and Recovery. 2 Review: The ACID properties v A v A tomicity: All actions in the Xact happen, or none happen. v C v C onsistency: If each Xact.
Database Applications (15-415) DBMS Internals- Part XIV Lecture 25, April 17, 2016 Mohammad Hammoud.
1 Database Systems ( 資料庫系統 ) January 3, 2005 Chapter 18 By Hao-hua Chu ( 朱浩華 )
Transactional Information Systems:
Contents. Goal and Overview. Ingredients. The Page Model.
Database Recovery Techniques
Database Recovery Techniques
DURABILITY OF TRANSACTIONS AND CRASH RECOVERY
ARIES: Algorithm for Recovery and Isolation Exploiting Semantics
Transactional Information Systems:
Implementing Atomicity and Durability
CS 440 Database Management Systems
Computational Models Database Lab Minji Jo.
Database Applications (15-415) DBMS Internals- Part XIII Lecture 22, November 15, 2016 Mohammad Hammoud.
Crash Recovery Chapter 18
Transactional Information Systems:
Chapter 16: Recovery System
Database Applications (15-415) DBMS Internals- Part XIV Lecture 23, November 20, 2016 Mohammad Hammoud.
Chapter 6: Concurrency Control on Objects: Notions of Correctness
Database Systems (資料庫系統)
Crash Recovery Chapter 18
CSIS 7102 Spring 2004 Lecture 10: ARIES
Chapter 13: Page-Model Crash Recovery Algorithms
Transactional Information Systems:
Recovery I: The Log and Write-Ahead Logging
Recovery II: Surviving Aborts and System Crashes
Crash Recovery Chapter 18
Crash Recovery, Part 2 R&G - Chapter 18
Database Applications (15-415) DBMS Internals- Part XIII Lecture 25, April 15, 2018 Mohammad Hammoud.
Transactional Information Systems:
Database Recovery 1 Purpose of Database Recovery
Transactional Information Systems:
Transactional Information Systems
Transactional Information Systems:
Crash Recovery Chapter 18
Chapter 7: Concurrency Control Algorithms on Objects
Database Applications (15-415) DBMS Internals- Part XIII Lecture 24, April 14, 2016 Mohammad Hammoud.
Transactional Information Systems:
Crash Recovery Chapter 18
Presentation transcript:

Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery Gerhard Weikum and Gottfried Vossen © 2002 Morgan Kaufmann ISBN 1-55860-508-8 “Teamwork is essential. It allows you to blame someone else.”(Anonymous) 1/2/2019 Transactional Information Systems

Transactional Information Systems Part III: Recovery 11 Transaction Recovery 12 Crash Recovery: Notion of Correctness 13 Page-Model Crash Recovery Algorithms 14 Object-Model Crash Recovery Algorithms 15 Special Issues of Recovery 16 Media Recovery 17 Application Recovery 1/2/2019 Transactional Information Systems

Chapter 14: Object-Model Crash Recovery 14.2 Overview of Redo-History Algorithms 14.3 Simple Algorithm for 2-Layered Systems 14.4 Enhanced Algorithm for 2-Layered Systems 14.5 Complete Algorithm for General Executions 14.6 Lessons Learned “This we know. All things are connected.” (Chief Seattle) 1/2/2019 Transactional Information Systems

Conceptual Overview of Redo-History Algorithms Analysis pass: as in page model Redo pass: page-level redo for efficiency Undo pass: needs to invoke inverse high-level operations Problems: atomicity of high-level operations: how to deal with partial effects of high-level operations idempotence of high-level operations: how to detect and prevent duplicate executions in situations where winners can follow losers Solutions: page-level undo for partial high-level operations create CLEs for high-level inverse operations 1/2/2019 Transactional Information Systems

Example for Object-Model Crash Recovery incr(x) incr(y) incr(z) t1 incr(x) L1 t2 r(p) w(p) r(q) w(q) r(s) w(s) r(r) w(r) r(s) w(s) t11 t12 t13 r(p) w(p) r(r) w(r) L0 t21 crash 1/2/2019 Transactional Information Systems

Chapter 14: Object-Model Crash Recovery 14.2 Overview of Redo-History Algorithms 14.3 Simple Algorithm for 2-Layered Systems 14.4 Enhanced Algorithm for 2-Layered Systems 14.5 Complete Algorithm for General Executions 14.6 Lessons Learned 1/2/2019 Transactional Information Systems

Actions During Normal Operation Introduce separate logs for each layer, with separate instances of the log manager‘s data structures (e.g., log buffer) Maintain L0 log for page writes on behalf of subtransactions along with subcommit log entries for redo of completed subtransactions and undo of incomplete subtransactions Maintain L1 log for high-level inverse operations and transaction commit log entries Both logs make use of CLEs page-model crash recovery for sub- transactions Log buffer forcing necessary for: L0 log before a dirty page can be flushed L1 log upon transaction commit, with L0 log forced beforehand for transaction redo guarantee L1 log before L0 log is forced for transaction undo guarantee 1/2/2019 Transactional Information Systems

Execution of High-Level Operations exec (op, transid, inputparams, returnvalues, s): subbegin ( ) subtransid; execute operation; newlogentry.LogSeqNo := s; newlogentry.ActionType := exec; newlogentry.TransId := transid; newlogentry.SubtransId := subtransid; newlogentry.UndoInfo := information on the inverse operation and its parameters; newlogentry.PreviousSeqNo := ActiveTrans[transid].LastSeqNo; ActiveTrans[transid].LastSeqNo := s; L1LogBuffer += newlogentry; subcommit (subtransid); 1/2/2019 Transactional Information Systems

Simple 2-Level Crash Recovery Algorithm L0 recovery first identifies winner subtransactions, performs redo for these and undo for incomplete subtransactions L1 recovery then identifies loser transactions, performs undo by traversing the corresponding NextUndoSeqNo backward chains: an inverse operation is initiated iff the corresponding forward subtransaction was a winner inverse operation executions create CLEs in the L1 log and are treated like subtransactions during normal operation restart ( ): L0 analysis pass ( ) returns losers, winners, DirtyPages; L0 redo pass ( ); L0 undo pass ( ); L1 analysis pass ( ); L1 undo pass ( ); 1/2/2019 Transactional Information Systems

Efficient Testing of Winner Subtransactions Problem: L1 undo step needs to be invoked iff the corresponding subtransaction is an L0 winner  need efficient test without explicit L0 winner list Solution: Include L0 subbegin LSN in L1 log entry for high-level operation L0 analysis pass should identify maximum subbegin LSN as a “survivor mark” and explicitly identifies loser subtransactions L1 undo pass test “presence” of high-level operation fij as follows: if subbegin LSN in L1 log entry for fij is larger than survivor mark then fij must be a loser subtransaction otherwise (i.e., there is L0 evidence of fij), if fij is not a loser subtransaction then it must be a winner subtransaction 1/2/2019 Transactional Information Systems

L1 Undo Pass of Simple 2-Level Algorithm (1) ActiveTrans := empty; for each t in L1 losers do ActiveTrans += t; ActiveTrans[t].LastSeqNo := losers[t].LastSeqNo; end /*for*/; while there exists t in losers such that losers[t].LastSeqNo <> nil do nexttrans := TransNo in losers such that losers[nexttrans].LastSeqNo = max {losers[x].LastSeqNo | x in losers}; nextentry := losers[nexttrans].LastSeqNo; if StableLog[nextentry].ActionType = compensation then if StableLog[nextentry].CompensatingSubtransId is in L0 winners then losers[nexttrans].LastSeqNo := StableLog[nextentry].NextUndoSeqNo else StableLog[nextentry].PreviousSeqNo; end /*if*/; 1/2/2019 Transactional Information Systems

L1 Undo Pass of Simple 2-Level Algorithm (2) if StableLog[nextentry].ActionType = exec then if StableLog[nextentry].SubtransId is in L0 winners then subbegin ( ); newlogentry.LogSeqNo := new sequence number; newlogentry.ActionType := compensation; newlogentry.PreviousSeqNo := ActiveTrans[transid].LastSeqNo; newlogentry.NextUndoSeqNo := nextentry.PreviousSeqNo; ActiveTrans[transid].LastSeqNo := newlogentry.LogSeqNo; LogBuffer += newlogentry; execute inverse operation according to StableLog[nextentry].UndoInfo; subcommit ( ); end /*if*/; losers[nexttrans].LastSeqNo := StableLog[nextentry].PreviousSeqNo; 1/2/2019 Transactional Information Systems

L1 Undo Pass of Simple 2-Level Algorithm (3) if StableLog[nextentry].ActionType = begin then newlogentry.LogSeqNo := new sequence number; newlogentry.ActionType := rollback; newlogentry.TransId := StableLog[nextentry].TransId; newlogentry.PreviousSeqNo := ActiveTrans[transid].LastSeqNo; LogBuffer += newlogentry; ActiveTrans -= transid; losers -= transid; end /*if*/; end /*while*/; force ( ); 1/2/2019 Transactional Information Systems

Example for Simple 2-Level Algorithm Sequence number: action Cached changes [PageNo: SeqNo] Stable Changes [PageNo: SeqNo] Log entry added to L0 log [LogSeqNo: action] Log entry added to L1 log [LogSeqNo: action] 1: begin (t1) 2: incr (x, t1) 2: incr -1(x, t1) 3: subbegin (t11) 4: write (p, t11) p: 4 5: write (q, t11) q: 5 6: subcommit (t11) 7: begin (t2) 8: incr (x, t2) 8: incr-1 (x, t2) 9: subbegin (t21) 10: write (p, t21) p: 10 11: incr (y, t1) 11: incr-1 (y, t1) 12: subbegin (t12) 13: write (s, t12) s: 13 actions during normal operation 14: flush (p) p: 10 15: write (r, t21) r: 15 16: flush (s) s: 13 17: subcommit (t21) 18: commit (t2) 19: write (r, t12) r: 19 20: subcommit (t12) 21: incr (z, t1) 21: incr-1 (z, t1) 22: subbegin (t13) 23: write (s, t13) s: 23  SYSTEM CRASH  1/2/2019 Transactional Information Systems

Transactional Information Systems Sequence number: action Cached changes [PageNo: SeqNo] Stable Changes [PageNo: SeqNo] Log entry added to L0 log [LogSeqNo: action] Log entry added to L1 log [LogSeqNo: action] RESTART L0 analysis pass: L0 losers = {t13}, L0 winners = {t11, t21, t12} consider-redo (4) redo (5) q: 5 consider-redo (10) consider-redo (13) redo (15) r: 15 redo (19) r: 19 redo (23) s: 23 24: compensate (23) s: 24 24: CLE (23), next=nil 25: subrollback (t13) L1 analysis pass: L1 losers = {t1} consider-compensate (21, t13) 26: compensate (11, t12)  t14 26: CLE (11, t12, t14), next = 2 27: subbegin (t14) 28: write (s, t14) s: 28 29: write (r, t14) r: 29 30: flush (r) r: 29 31: subcommit (t14) 32: flush (q) q: 5 33: compensate (2, t11)  t15 33: CLE(2, t11, t15), next = nil  SECOND SYSTEM CRASH  1/2/2019 Transactional Information Systems

Sequence number: action Cached changes [PageNo: SeqNo] Stable Changes [PageNo: SeqNo] Log entry added to L0 log [LogSeqNo: action] Log entry added to L1 log [LogSeqNo: action] SECOND RESTART L0 analysis pass: L0 losers = {t13}, L0 winners = {t11, t21, t12, t13, t14} consider-redo (4) consider-redo (5) consider-redo (10) consider-redo (13) consider-redo (15) consider-redo (19) redo (23) s: 23 redo (24) s: 24 redo (28) s: 28 consider-redo (29) 34: subrollback (t15) L1 analysis pass: L1 losers = {t1} 35: compensate (2, t11)  t16 35: CLE (2, t11, t16), nex t= nil 36: subbegin (t16) 37: write (p, t16) p: 37 38: write (q, t16) q: 38 39: subcommit (t16) 40: rollback (t1) SECOND RESTART COMPLETE: RESUME NORMAL OPERATION 1/2/2019 Transactional Information Systems

Chapter 14: Object-Model Crash Recovery 14.2 Overview of Redo-History Algorithms 14.3 Simple Algorithm for 2-Layered Systems 14.4 Enhanced Algorithm for 2-Layered Systems 14.5 Complete Algorithm for General Executions 14.6 Lessons Learned 1/2/2019 Transactional Information Systems

Enhanced 2-Level Crash Recovery Algorithm combine L0 log and L1 log into a single log simplifies log forcing: log buffer forcing as in page model simplifies state testing by L1 undo: by creating the L1 log entry for the inverse operation at the end of the subtransaction and interpreting it also as an L0 subcommit, the L1 undo pass does no longer need to to test for L0 winners can combine two analysis passes into one can combine two undo passes into one by using the NextUndoSeqNo backward chain as follows: an L0 write log entry points to the preceding write in the same subtransaction the very first L0 write log entry of a subtransaction points to the L1 log entry of the preceding subtransaction an L0 or L1 CLE points to the predecessor of the compensated action 1/2/2019 Transactional Information Systems

Transactional Information Systems NextUndoSeqNo Backward Chaining in Enhanced 2-Level Crash Recovery Algorithm begin (t1) combined L0/L1 log ... ... w111 w112 exec11-1 (=sub- commit (t11) ) w121 w122 exec12-1 (t12) ) w123 w131 w132 crash ... during normal operation w132-1 ... continued during restart NextUndoSeqNo backward chain CLE w131-1 w141 w142 w143 (t14) ) w151 w152 (t15) ) com- mit 1/2/2019 Transactional Information Systems

L0/L1 Undo Pass of Enhanced 2-Level Algorithm (1) ActiveTrans := empty; for each t in losers do ActiveTrans += t; ActiveTrans[t].LastSeqNo := losers[t].LastSeqNo; end /*for*/; while there exists t in losers such that losers[t].LastSeqNo <> nil do nexttrans = TransNo in losers such that losers[nexttrans].LastSeqNo = max {losers[x].LastSeqNo | x in losers}; nextentry := losers[nexttrans].LastSeqNo; if StableLog[nextentry].ActionType = compensation then losers[nexttrans].LastSeqNo := StableLog[nextentry].NextUndoSeqNo; end /*if*/; 1/2/2019 Transactional Information Systems

L0/L1 Undo Pass of Enhanced 2-Level Algorithm (2) if StableLog[nextentry].ActionType = write or full-write then pageno := StableLog[nextentry].PageNo; fetch (pageno); if DatabaseCache[pageno].PageSeqNo >= nextentry.LogSeqNo then newlogentry.LogSeqNo := new sequence number; newlogentry.ActionType := compensation; newlogentry.PreviousSeqNo := ActiveTrans[transid].LastSeqNo; newlogentry.NextUndoSeqNo := nextentry.PreviousSeqNo; newlogentry.RedoInfo := inverse action of the action in nextentry; ActiveTrans[transid].LastSeqNo := newlogentry.LogSeqNo; LogBuffer += newlogentry; read and write (StableLog[nextentry].PageNo) according to StableLog[nextentry].UndoInfo; DatabaseCache[pageno].PageSeqNo := newlogentry.LogSeqNo; end /*if*/; losers[nexttrans].LastSeqNo := StableLog[nextentry].NextUndoSeqNo; 1/2/2019 Transactional Information Systems

L0/L1 Undo Pass of Enhanced 2-Level Algorithm (3) if StableLog[nextentry].ActionType = exec then subbegin ( ); execute inverse operation according to StableLog[nextentry].UndoInfo; newlogentry.LogSeqNo := new sequence number; newlogentry.ActionType := compensation; newlogentry.PreviousSeqNo := ActiveTrans[transid].LastSeqNo; newlogentry.NextUndoSeqNo := nextentry.NextUndoSeqNo; ActiveTrans[transid].LastSeqNo := newlogentry.LogSeqNo; LogBuffer += newlogentry; subcommit ( ); losers[nexttrans].LastSeqNo := StableLog[nextentry].NextUndoSeqNo; end /*if*/; 1/2/2019 Transactional Information Systems

L0/L1 Undo Pass of Enhanced 2-Level Algorithm (4) if StableLog[nextentry].ActionType = begin then newlogentry.LogSeqNo := new sequence number; newlogentry.ActionType := rollback; newlogentry.TransId := StableLog[nextentry].TransId; newlogentry.PreviousSeqNo := ActiveTrans[transid].LastSeqNo; LogBuffer += newlogentry; ActiveTrans -= transid; losers -= transid; end /*if*/; end /*while*/; force ( ); 1/2/2019 Transactional Information Systems

Example for Enhanced 2-Level Algorithm Sequence number: action Cached changes [PageNo: SeqNo] Stable Changes [PageNo: SeqNo] Log entry added [LogSeqNo: action] [NextUndoSeqNo] 1: begin (t1) 1: begin (t1), next = nil 2: incr (x, t1) 3: subbegin (t11) 4: write (p, t11) p: 4 4: write (p, t11), next = nil 5: write (q, t11) q: 5 5: write (q, t11), next = 4 6: subcommit (t11) 6: incr-1 (x, t1), next = nil 7: begin (t2) 8: incr (x, t2) 9: subbegin (t21) 10: write (p, t21) p: 10 10: write (p, t21), next = nil 11: incr (y, t1) 12: subbegin (t12) 13: write (s, t12) s: 13 13: write (s, t12), next = 6 14: flush (p) p: 10 15: write (r, t21) r: 15 15: write (r, t21), next = 10 16: flush (s) s: 13 17: subcommit (t21) 17: incr-1 (x, t2), next = nil 18: commit (t2) 19: write (r, t12) r: 19 19: write (r, t12), next = 13 20: subcommit (t12) 20: incr-1 (y, t1), next = 6 21: incr (z, t1) 22: subbegin (t13) 23: write (s, t13) s: 23 23: write (s, t13), next = 20  SYSTEM CRASH  1/2/2019 Transactional Information Systems

Transactional Information Systems Sequence number: action Cached changes [PageNo: SeqNo] Stable Changes [PageNo: SeqNo] Log entry added [LogSeqNo: action] [NextUndoSeqNo] RESTART analysis pass: losers = {t1}, LastSeqNo (t1) = 23 consider-redo (4) redo (5) q: 5 consider-redo (10) consider-redo (13) redo (15) r: 15 redo (19) r: 19 redo (23) s: 23 24: compensate (23) s: 24 24: CLE (23), next = 20 25: compensate (20, t12)  t14 26: subbegin (t14) 27: write (s, t14) s: 27 27: write (s, t14), next = 20 28: write (r, t14) r: 28 28: write (r, t14), next = 27 29: flush (r) r: 28 30: subcommit (t14) 30: CLE (20, t12, t14), next = 6 31: flush (q) q: 5 32: compensate (6, t11)  t15  SECOND SYSTEM CRASH  1/2/2019 Transactional Information Systems

Sequence number: action Cached changes [PageNo: SeqNo] Stable Changes [PageNo: SeqNo] Log entry added [LogSeqNo: action] [NextUndo SeqNo] SECOND RESTART analysis pass: losers = {t1}, Last SeqNo (t1) = 30 consider-redo (4) consider-redo (5) consider-redo (10) consider-redo (13) consider-redo (15) consider-redo (19) redo (23) s: 23 redo (24) s: 24 redo (27) s: 27 consider-redo (28) 33: compensate (6, t11)  t15 34: subbegin (t15) 35: write (p, t15) p: 35 35: write (p, t15) , next = 6 36: write (q, t15) q: 36 36: write (q, t15), next = 35 37: subcommit (t15) 37: CLE (6, t11, t15), next = nil 38: rollback (t1) SECOND RESTART COMPLETE: RESUME NORMAL OPERATION 1/2/2019 Transactional Information Systems

Correctness of Enhanced 2-Level Algorithm Theorem 14.1: The enhanced 2-level crash recovery method, with 3 passes over the combined log, performs correct recovery. Proof sketch: The following invariant holds at each point of the undo pass: log sequence numbers s  StableLog such that s = ActiveTrans[t].LastSeqNo for some loser transaction t:  operations o  StableLog: (o belongs to t)  (o is reachable along ActiveTrans[t].NextUndoSeqNo  o  CachedDatabase) 1/2/2019 Transactional Information Systems

Chapter 14: Object-Model Crash Recovery 14.2 Overview of Redo-History Algorithms 14.3 Simple Algorithm for 2-Layered Systems 14.4 Enhanced Algorithm for 2-Layered Systems 14.5 Complete Algorithm for General Executions 14.6 Lessons Learned 1/2/2019 Transactional Information Systems

Transactional Information Systems Lessons Learned The redo-history paradigm can be extended to object-model crash recovery. State-of-the-art algorithms are based on: page-oriented redo of winners and losers log entries of all levels in a single log, to facilitate a single undo pass log entries for high-level operations are at the same time sub-commit log entries to ensure the operation atomicity for undo, log entries of all levels are appropriately linked in the NextUndoSeqNo backward chain during undo, CLEs are created to track progress and ensure idempotence during undo, the execution of high-level inverse operations requires the creation of low-level redo log entries to ensure operation atomicity 1/2/2019 Transactional Information Systems