Presentation is loading. Please wait.

Presentation is loading. Please wait.

TRANSACTIONS A sequence of SQL statements to be executed "together“ as a unit: A money transfer transaction: Reasons for Transactions : Concurrency control.

Similar presentations


Presentation on theme: "TRANSACTIONS A sequence of SQL statements to be executed "together“ as a unit: A money transfer transaction: Reasons for Transactions : Concurrency control."— Presentation transcript:

1 TRANSACTIONS A sequence of SQL statements to be executed "together“ as a unit: A money transfer transaction: Reasons for Transactions : Concurrency control. E.g., A concurrent T2 that prints the statements of customers in the bank is not allowed to fetch Jane’s records between S1 and S2. Recovery from Crashes: Information in main memory is lost or compromised. - System crashes after S1 but before S2. What now? … But disk information is not lost and we can recover by undoing S1 or redoing S2. But we do not know how far the transaction was executed T1: begin transaction S1: UPDATE CAccount SET balance = balance - 10000 WHERE owner = ‘Jane' S2: Update SAccount SET balance = balance + 10000 WHERE owner = 'Jane’ end transaction

2 ©Silberschatz, Korth and Sudarshan16.2Database System Concepts - 6 th Edition Chapter 16: Recovery System Failure Classification Storage Structure Recovery and Atomicity Log-Based Recovery

3 ©Silberschatz, Korth and Sudarshan16.3Database System Concepts - 6 th Edition Classification of Failures Transaction failure: (RB) Logical errors: transaction cannot complete due to some internal error condition System errors: the database system must terminate an active transaction due to an error condition (e.g., deadlock). System crash: a power failure or other hardware or software failure causes the system to crash. (Recovery) Fail-stop assumption: non-volatile storage contents are assumed to not be corrupted by system crash  Database systems have numerous integrity checks to prevent corruption of disk data Disk failure: a head crash or similar disk failure destroys all or part of disk storage Destruction is assumed to be detectable: disk drives use checksums to detect failures and then recover.

4 ©Silberschatz, Korth and Sudarshan16.4Database System Concepts - 6 th Edition Recovery Algorithms Recovery algorithms have two parts 1. Actions taken during normal transaction processing to ensure enough information exists to recover from failures 2. Actions taken after a failure to recover the database contents to a state that ensures atomicity, consistency and durability

5 ©Silberschatz, Korth and Sudarshan16.5Database System Concepts - 6 th Edition Storage Structure Volatile storage: does not survive system crashes examples: main memory, cache memory Nonvolatile storage: survives system crashes examples: disk, tape, flash memory, non-volatile (battery backed up) RAM but may still fail, losing data Stable storage: a mythical form of storage that survives all failures approximated by maintaining multiple copies on distinct nonvolatile media:  RAID Redundant Array of Independent Disks

6 ©Silberschatz, Korth and Sudarshan16.6Database System Concepts - 6 th Edition Data Access Physical blocks are those blocks residing on the disk. Buffer blocks are the blocks residing temporarily in main memory. Block movements between disk and main memory are initiated through the following two operations: input(B) transfers the physical block B to main memory. output(B) transfers the buffer block B to the disk, and replaces the appropriate physical block there. We assume, for simplicity, that each data item fits in, and is stored inside, a single block.

7 ©Silberschatz, Korth and Sudarshan16.7Database System Concepts - 6 th Edition Example of Data Access X Y A B x1x1 y1y1 buffer Buffer Block A Buffer Block B input(A) output(B) read(X) write(Y) disk work area of T 1 work area of T 2 memory x2x2

8 ©Silberschatz, Korth and Sudarshan16.8Database System Concepts - 6 th Edition Recovery and Atomicity To ensure atomicity despite failures, we first output information describing the modifications to stable storage without modifying the database itself. We study log-based recovery mechanisms in detail We first present key concepts And then present the actual recovery algorithm Less used alternative: shadow-paging (brief details in book)

9 ©Silberschatz, Korth and Sudarshan16.9Database System Concepts - 6 th Edition Log-Based Recovery A log is kept on stable storage. The log is a sequence of log records, and maintains a record of update activities on the database. When transaction T i starts, it registers itself by writing as a log record Before T i executes write(X), a log record is written, where V 1 is the value of X before the write (the old value), and V 2 is the value to be written to X (the new value). When T i finishes it last statement, the log record is written. Two approaches using logs: Deferred database modification Immediate database modification

10 ©Silberschatz, Korth and Sudarshan16.10Database System Concepts - 6 th Edition Immediate Database Modification The immediate-modification scheme Update log record must be written and output to disk before database items are written and output Thus upon recovery the log has the whole story Output of blocks to disk takes place at any time (i.e., before or after transaction commit) Order in which blocks are output can be different from the order in which they are written.

11 ©Silberschatz, Korth and Sudarshan16.11Database System Concepts - 6 th Edition Deferred Modification Scheme The deferred-modification scheme: When transaction reaches commit point Writes log to buffer and output this to disk, Output of updated data blocks (in some order) ASAP This simplifies some aspects of recovery, but transactions must use private buffer.

12 ©Silberschatz, Korth and Sudarshan16.12Database System Concepts - 6 th Edition Transaction Commit A transaction is said to have committed when its commit log record is output to stable storage all previous log records of the transaction must have been output already Writes performed by a transaction may still be in the buffer when the transaction commits, and may be output later

13 ©Silberschatz, Korth and Sudarshan16.13Database System Concepts - 6 th Edition Immediate Database Modification Example Log Write Output <T o, B, 2000, 2050 A = 950 B = 2050 …the log C = 600 B B, B C …the log B A Note: B X denotes block containing X. B C output before T 1 commits B A output after T 0 commits

14 ©Silberschatz, Korth and Sudarshan16.14Database System Concepts - 6 th Edition Undo and Redo Operations Undo of a log record writes the old value V 1 to X undo(T i ) restores the value of all data items updated by T i to their old values, going backwards from the last log record for T i  when undo of a transaction is complete, a log record is written out. Redo of a log record writes the new value V 2 to X redo(T i ) sets the value of all data items updated by T i to the new values, going forward from the first log record for T i  No logging is done in this case

15 ©Silberschatz, Korth and Sudarshan16.15Database System Concepts - 6 th Edition Undo and Redo on Recovering from Failure When recovering after failure: Transaction T i needs to be undone if the log  contains the record,  but does not contain either the record or. Transaction T i needs to be redone if the log  contains the records  and contains the record or

16 ©Silberschatz, Korth and Sudarshan16.16Database System Concepts - 6 th Edition Immediate DB Modification Below we show the log as it appears at three instances of time. Recovery actions in each case above are: (a) undo (T 0 ): (b) redo (T 0 ) and undo (T 1 ) (c) redo (T 0 ) and redo (T 1 ) Immediate modification commit T is the first written for T What about deferred modifications ?

17 ©Silberschatz, Korth and Sudarshan16.17Database System Concepts - 6 th Edition How can we recover if: Q: What should DBMS do during recovery when it sees up to log record 4? Or log record 5 Or log record 7

18 ©Silberschatz, Korth and Sudarshan16.18Database System Concepts - 6 th Edition Checkpoints Redoing/undoing all transactions recorded in the log can be very slow 1. processing the entire log is time-consuming if the system has run for a long time 2. we might unnecessarily redo transactions which have already output their updates to the database. Streamline recovery procedure by periodically performing checkpointing 1. Output all log records currently residing in main memory onto stable storage. 2. Output all modified buffer blocks to the disk. 3. Write a log record onto stable storage where L is a list of all transactions active at the time of checkpoint. All updates are stopped while doing checkpointing

19 ©Silberschatz, Korth and Sudarshan16.19Database System Concepts - 6 th Edition Checkpoints (Cont.) Scan backwards from end of log to find the most recent record Only transactions that are in L or started after the checkpoint need to be redone or undone Transactions that committed or aborted before the checkpoint already have all their updates output to stable storage. Some earlier part of the log may be needed for undo operations 1. Continue scanning backwards till a record is found for every transaction T i in L. Parts of log prior to earliest record above are not needed for recovery, and can be erased whenever desired.

20 ©Silberschatz, Korth and Sudarshan16.20Database System Concepts - 6 th Edition Example of Checkpoints T 1 can be ignored (updates already output to disk due to checkpoint) T 2 and T 3 redone. T 4 undone TcTc TfTf T1T1 T2T2 T3T3 T4T4 checkpoint system failure

21 ©Silberschatz, Korth and Sudarshan16.21Database System Concepts - 6 th Edition Recovery from failure: Two phases Redo phase: replay updates of all transactions, whether they committed, aborted, or are incomplete Undo phase: undo all incomplete transactions Redo phase: 1. Find last record, and set undo-list to L. 2. Scan forward from above record 1. Whenever a record is found, redo it by writing V 2 to X j 2. Whenever a log record is found, add T i to undo-list 3. Whenever a log record or is found, remove T i from undo-list Recovery Algorithm (After Crash)

22 ©Silberschatz, Korth and Sudarshan16.22Database System Concepts - 6 th Edition Recovery Algorithm (Cont.) Undo phase: 1. Scan log backwards from end 1. Whenever a log record is found where T i is in undo-list perform same actions as for transaction rollback: 1. perform undo by writing V 1 to X j. 2.write a log record 2. Whenever a log record is found where T i is in undo- list, 1.Write a log record 2.Remove T i from undo-list 3. Stop when undo-list is empty i.e. has been found for every transaction in undo-list After undo phase completes, normal transaction processing can commence


Download ppt "TRANSACTIONS A sequence of SQL statements to be executed "together“ as a unit: A money transfer transaction: Reasons for Transactions : Concurrency control."

Similar presentations


Ads by Google