Recoverable, cascadeless and strict schedules
Why serializability is not enough once transactions can abort: reads-from, recoverable schedules (a transaction commits only after every transaction it read from), cascadeless schedules (reads only committed values), strict schedules (no read or write of an uncommitted write, which also makes before-image undo correct) and rigorous schedules, the inclusions between the classes, cascading rollback, and the independence of the recoverability classes from conflict serializability; classes are computed by definition and recomputed by a dynamic simulation.
Why it exists
Serializability assumes every transaction commits. In real systems a transaction can abort (an error, a deadlock victim, a failed constraint). If another transaction has already used its values, that transaction depends on something that never happened. A schedule must therefore be arranged so that aborting one transaction can be done without undoing committed work. This page defines the classes of schedules that allow this, from weak to strong.
Prerequisites
You need schedules, conflicts and serializability (schedules and serializability).
Precise definitions
reads from (with ) if reads an item whose latest preceding write was made by (and has not aborted before the read: its write would have been undone).
- A schedule is recoverable if whenever reads from and commits, then commits before commits. (If later aborted, would have committed a result built on a value that vanished, and a commit cannot be undone.)
- A schedule avoids cascading aborts (is cascadeless, ACA) if every transaction reads only values written by committed transactions: comes before whenever reads from . Then no abort ever forces another transaction to abort.
- A schedule is strict if no transaction reads or overwrites an item written by another transaction until that transaction has committed or aborted.
- A schedule is rigorous if it is strict and also no transaction writes an item that an uncommitted transaction has read: in no conflict does the later operation come before the other transaction has finished.
The inclusions: . Each class forbids more than the one before; the inclusions are proper (the examples below separate them).
Independence from serializability. A schedule can be conflict serializable and not recoverable, or recoverable and not conflict serializable. Rigorous schedules are conflict serializable (every conflicting pair is separated by the end of the first transaction, so the schedule is equivalent to the order of commits).
How it works
The classes on examples
Classes of schedules: start
Computed by a script, not typed| schedule | conflict serializable | recoverable | avoids cascading aborts | strict | rigorous |
|---|---|---|---|---|---|
| w1(A) r2(A) c2 c1 | |||||
| w1(A) r2(A) c1 c2 | |||||
| w1(A) w2(A) c1 c2 | |||||
| r1(A) w2(A) c2 c1 | |||||
| w1(A) c1 r2(A) w2(A) c2 | |||||
| r1(A) w2(A) w1(A) w3(A) c1 c2 c3 |
Step 0
Each answer is computed from the definitions in scripts/db_txn.py and recomputed by a dynamic simulation (dirty reads and dirty writes tracked as the schedule runs) in scripts/enum-checks/db_txn_check.py.
Reading the rows (each ends with the commits shown):
- : read from and committed first. Not recoverable: if aborted after , the committed would have used a vanished value.
- : recoverable (the commit order is right), but read uncommitted data, so an abort of before would force to abort too: not cascadeless.
- : nobody reads uncommitted data, so cascadeless, but overwrote an uncommitted write: not strict.
- : strict (nothing written by an uncommitted transaction is touched; overwrites an item that only read), but not rigorous.
- The serial schedule is rigorous.
- The last row (the view serializable schedule of the previous page) is recoverable and cascadeless but neither strict nor conflict serializable: the two properties are independent.
Cascading rollback
Cascading rollback: start
Computed by a script, not typed| time | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| T1 | |||||
| T2 | |||||
| T3 |
Step 0
Nobody has committed yet: T2 builds on T1, T3 builds on T2.
read an uncommitted value of , read an uncommitted value of . When aborts, both and have used values that never existed and must abort: a cascading rollback (the abort spreads along the reads-from relation, transitively). Cascadeless schedules make this impossible, at the price of making readers wait for commits.
Why strictness matters for undo
Why dirty writes break undo: start
Computed by a script, not typed| time | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| T1 | ||||
| T2 | ||||
| database |
Step 0
A = 100. T1 will abort; T2 will commit.
If overwrites an uncommitted write of and then aborts, restoring 's before-image () destroys the value that wrote and committed. In a strict schedule no transaction touches an item written by an active transaction, so undoing a transaction simply restores the before-images of its own writes. That is why practical systems produce strict (usually rigorous) schedules.
Worked examples
EX 1Recoverable?
Easy: reads from and commits first: not recoverable. Swapping the commits to makes it recoverable (not cascadeless, because the read comes before ).
EX 2Strongest class
Medium: no transaction reads from another, so it is recoverable and cascadeless; no write touches an item written by an active transaction, so it is strict; writes which the active read, so it is not rigorous. Strongest class: strict.
EX 3Cascading abort set
Medium: read from , read from . If aborts, and must abort too: two further transactions are rolled back.
EX 4Typical questions
GATE level(a) "Is a serializable schedule always recoverable?" No ( is conflict serializable and not recoverable). (b) "Is every cascadeless schedule recoverable?" Yes. (c) "Is every strict schedule serializable?" No: strictness says nothing about conflict cycles. (d) "Which condition guarantees that no cascading rollback occurs?" Reading only committed data (cascadeless schedules).
Cheat box
Cheat box
- Recoverable: a reader commits after the writer it read from.
- Cascadeless: read only committed values. Strict: no read or write of an uncommitted write. Rigorous: also no write of an item read by an active transaction.
- rigorous strict cascadeless recoverable.
- Independent of serializability: both directions fail.
- Cascading rollback follows reads-from transitively.
Traps and GATE patterns
Connections
Across subjects
No cross-subject links yet.
Locking protocols produce these classes: strict two-phase locking gives strict schedules, rigorous two-phase locking rigorous ones (two-phase locking). Undo and redo with a log are the subject of log-based recovery.
PYQs
6 previous year questions from your book. I re-solved each one myself (5 by running or simulating, 1 by reasoning only); the book's key is shown next to my answer. All PYQs
A schedule of three database transactions T1,T2, andT3 is shown. Ri(A) and Wi (A) denote read and write of data item A by transaction Ti, i=1,2,3 The transaction T1 aborts at the end. Which other transaction(s) will be required to be rolled back? R1(X); W1(Y); R2(X); R2(Y); R3(Y) ;ABORT(T1);
- (a)Only T2
- (b)Only T3
- (c)Both T2 and T3
- (d)Neither T2 nor T3
Let S be the following schedule of operations of three transactions T1, T2 and T3 in a relational database system: R2(Y), R1(X), R3(Z), R1(Y), W1(X), R2(Z), W2(Y), R3(X), W3(Z) Consider the statements P and Q below: P: S is conflict-serializable. Q: If T3 commits before T1 finishes, then S is recoverable. Which one of the following choices is correct?
- (a)Both P and Q are true.
- (b)P is false and Q is true.
- (c)Both P and Q are false.
- (d)P is true and Q is false.
Consider the following two statements about database transaction schedules: I. Strict two-phase locking protocol generates conflict serializable schedules that are also recoverable. II. Timestamp-ordering concurrency control protocol with Thomas write rule can generate view serializable schedules that are not conflict serializable. Which of the above statements is/are TRUE?
- (a)Both I and II
- (b)Neither I nor II
- (c)II only
- (d)I only DATABASE MANAGEMENT SYSTEM
Consider the following database schedule with two transactions, T1 and T2. S – r2(X); r1(X); r2(Y); w1(X); r1(Y); w2(X); a1; a2 Where ri(Z) denotes a read operation by transaction Ti on a variable Z, wi(Z) denotes a write operation by Ti on a variable Z and ai denotes an abort by transaction Ti. Which one of the following statements about the above schedule is TRUE?
- (a)S is non-recoverable
- (b)S is recoverable, but has a cascading abort
- (c)S does not have a cascading abort
- (d)S is strict
Consider the partial Schedule S involving two transactions T1 and T2. Only the read and the write operations have been shown. The read operation on data item P is denoted by read(P) and write operation on data item P is denoted by write(P). Schedule S Time Instance Transaction ID T1 T2 1 read(A) 2 write (A) 3 read(C) 4 write (C) 5 read(B) 6 write (B) 7 read(A) 8 commit 9 read(B) Suppose that the transaction T1 fails immediately after time instance 9. Which of the following statements is correct?
- (a)T2 must be aborted and then both T1 and T2 must be re-started to ensure transaction atomicity
- (b)Schedule S is non-recoverable and cannot ensure transaction atomicity
- (c)Only T2 must be aborted and then re- started to ensure transaction atomicity
- (d)Schedule S is recoverable and can ensure atomicity and nothing else needs to be done.
Consider the following schedule S of transactions T1, T2, T3, T4: T1 T3 T3 T. Writes (X) Commit Writes (Y) Reads (Z) Commit Reads (X) Reads (Y) Commit Which one of the following statements is CORRECT?
- (a)S is conflict-serializable but not recoverable
- (b)S is not conflict-serializable but is recoverable
- (c)S is both conflict-serializable and recoverable
- (d)S is neither conflict-serializable nor is it recoverable
Self-check
Question 1
: the strongest class?
Show answerHide
Recoverable but not cascadeless ( read before ).
Question 2
Is a rigorous schedule always conflict serializable?
Show answerHide
Yes: every pair of conflicting operations is separated by the end of the earlier transaction, so the schedule is equivalent to the serial schedule in commit order.
Question 3
Name a schedule that is cascadeless but not strict.
Show answerHide
.
Revision card
One-screen revision
- Recoverable: commit after the writers you read from.
- Cascadeless: read committed data only. Strict: also no overwrite of uncommitted data. Rigorous: also no overwrite of data read by active transactions.
- rigorous strict cascadeless recoverable.
- Independent of conflict serializability.
References
- ·Silberschatz, Korth, Sudarshan, Database System Concepts (7th edition), Chapter 17, Section 17.6 (Transaction isolation and atomicity)
- ·Elmasri, Navathe, Fundamentals of Database Systems (7th edition), Chapter 20, Section 20.4 (Characterizing schedules based on recoverability)
Verification
scripts/enum-checks/db_txn_check.py: on 6000 random schedules (2 or 3 transactions, items A and B, every transaction ends with a commit at a random position) the four class tests of scripts/db_txn.py agree with a dynamic simulation written separately (it tracks the last writer of every item and whether that writer is still active, the transactions each transaction has read from, and at each commit checks that all of them committed); the chain rigorous implies strict implies cascadeless implies recoverable held for every schedule, every class has examples, and rigorous schedules are conflict serializable. A second experiment aborted one of two transactions on one item with before-image undo: in no strict schedule did the undo destroy a surviving write. CONVENTIONS: (1) 'strict' here forbids reading AND writing an item last written by a transaction that is still active (the Silberschatz/Elmasri meaning); (2) 'rigorous' additionally forbids writing an item read by an active transaction, so no transaction ever depends on an uncommitted one in any conflict (rigorous schedules are the output of rigorous two-phase locking); (3) the page treats aborts only through the rules above and cascading_aborts, and assumes an aborted transaction's writes are undone; several books also define the classes for schedules in which some transactions abort - the definitions coincide. Recoverability and conflict serializability are independent (shown by the examples). Textbook section numbers are from memory. SECOND PASS (2026-11-02, done by the assistant, not a human check): every Self-check question was solved before the printed answer was read and all agreed; the definitions, worked examples, cheat box and traps were read claim by claim and re-derived against the textbook definitions and the sample database. No defect found. Status raised to self-checked; verified needs a textbook or human check.
last verified: never
My notes (saved in this browser)