-
Consider the following log sequence of two transactions on a bank account, with initial balance 12000, that transfer 2000 to a mortagage payment and then apply a 5% interest.
1. T1 start
2. T1 B old = 1200 new = 10000
3. T1 M old = 0 new = 2000
4. T1 commit
5. T1 start
6. T2 B old = 10000 new = 10500
7. T2 commit
Suppose the database system crashes just before log record is written. When the system is started, which one statement is true of the recovery procedure?
-
- We must redo log record 6 to set B to 10500
- We must redo log record 6 to set B to 10000 and the redo log records 2 and 3.
- We need not redo log records 2 and 3 because transaction T1 has committed
- We can apply redo and undo operations in arbitrary order because they are idempotent
- We must redo log record 6 to set B to 10500
Correct Option: B
We must undo log record 6 to set B to 10000 and then redo log records 2 and 3 because system fail before commit operation. So we need to undone active transactions(T2) and redo committed transactions (T1) Note: Here we are not using checkpoints.
Checkpoint : Checkpoint is a mechanism where all the previous logs are removed from the system and stored permanently in a storage disk. Checkpoint declares a point before which the DBMS was in consistent state, and all the transactions were committed.
Recovery : When a system with concurrent transactions crashes and recovers, it behaves in the following manner?
⇒ The recovery system reads the logs backwards from the end to the last checkpoint.
⇒ It maintains two lists, an undo-list and a redo-list.
⇒ If the recovery system sees a log with and or just, it puts the transaction in the redo-list.
⇒ If the recovery system sees a log with but no commits or abort log found, it puts the transaction in undo-list.
All the transactions in the undo-list are then undone and their logs are removed. All the transactions in the redo-list and their previous logs are removed and then redone before saving their logs.
So Answer is B We must redo log records 2 and 3 and undo log record 6.