Waiting to read committed values avoids cascading aborts.

highlighted = computed this step

Avoid dirty reads

The easiest way to avoid a ripple is to wait. The reader reads only after the writer has committed.

avoid cascading aborts\text{avoid cascading aborts}

Show the clean read

The reads-from row is still present, but the writer commit appears before the read.

read after commit\text{read after commit}

Safe commit and rollback schedules are tiny finite histories; logging, undo, ARIES, timing, isolation-level, product, and performance claims are out of scope.

Cascadeless scheduleeventtxopitemvalue1T1wX102T1c3T2rX4T2c reads-from factsreadEventreaderitemwriterwriteEventvalue3T2XT1110 external read dependencieswriterreaderitemwriteEventreadEventT1T2X13 classificationsfactvaluerecoverableyescascadelessyesstrictyes violationsnkindtx/readerwriteritemnonenonenonenonenone

Read the label

The cascadeless classification is yes. In this example the strict classification is also yes.

ACA=yes\text{ACA}=yes

Summary

Cascadeless is the academic label; the visible rule is simpler: do not read another transaction's uncommitted value.

committed reads only\text{committed reads only}