retagged by
10,549 views
19 votes
19 votes

Suppose a database system crashes again while recovering from a previous crash. Assume checkpointing is not done by the database either during the transactions or during recovery.

Which of the following statements is/are correct?

  1. The same undo and redo list will be used while recovering again 
  2. The system cannot recover any further
  3. All the transactions that are already undone and redone will not be recovered again 
  4. The database will become inconsistent
retagged by

2 Answers

Best answer
19 votes
19 votes

Answer: A

Ideation/Source of the content: Navathe 6th Edition, 22.1: Recovery Concepts

Explanation:

Support for option A and against option C: Since check-pointing is not used we have to depend on the system logs. Let's suppose we have three transactions A, B and C. Also assume that transaction A and C commits before failure and B was started but the system crashed before it can commit. So, in the first recovery process database will redo A and C as per the system logs. Now consider that while redoing A successfully commits, the system crashed for the second time before the B can commit. So, while recovering for the second time the same system logs will be used. However, it is should be noted that the system logs will also have entry to redo transaction A since it was committed after the first failure. However, the undo/redo operations are idempotent (they are the same no matter how many time they are executed).

Against option B: If the system crashes again same logic as above can be used for recovery.

Against option D: Inconsistency refers to situations (generally) when the value of a shared variable varies in two or more transactions, but that doesn’t seem to happen here as no uncommitted transaction’s data is being read/written during the entire recovery process.

Conclusion: So, the only option of selecting the same list for undo/redo seems to be correct.

selected by
0 votes
0 votes
Answer A,C A is trival to answer as that is recovery property

Why C if we look into statement let say we have set of transaction in DBMS , while recovery again the redo and undo transactions won't be recovered because of the data be Stored in stable storage . Note: system will assume if it is being undone or redone need not to recovered further .hence not recovered from previously redo and undo. It sounds contradiction but yeah it implies this only .
Answer:

Related questions

18 votes
18 votes
4 answers
4
Arjun asked Feb 18, 2021
10,540 views
Which of the following standard $C$ library functions will always invoke a system call when executed from a single-threaded process in a $\text{UNIX/Linux}$ operating sys...