Strict schedules
---> A schedule is strict if: " A value written by a transaction T is not read or overwritten by other transactions until T either aborts or commits.
---> Strict schedules are recoverable and cascadeless.
Cascadeless schedules
---> Even if schedule is recoverable, several transactions may need to be rolled back to recover correctly.
---> Cascading Rollback: a single transaction failure leading to a series of rollbacks
T1 | T2 | T3 |
R(A) | | |
R(B) | | |
W(B) | | |
| R(A) | |
| W(A) | |
| | R(A) |
Abort | | |
---> Cascadeless schedule: For any transactions Ti and Tj: if Tj reads data written by Ti, then Ti commits before read operation of Tj.
--> On a cascadeless schedule a transaction T2 cannot read a value a if a transaction T1 wrote a before that and didn't commit.
---> On a strict schedule T2 also wouldn't be able to write a after T1 wrote it (even if it read a before T1 wrote it).
If you read carefully, the definition of strict says "not read or overwritten". That's the difference.
from the Wikipedia page on the subject:
Another Solution
CASCADING ROLLBACK
An uncommitted transaction has to be rolled back because it read an item from a transaction that failed. This is the case for Se.
This form of rollback is undesirable, since it can lead to undoing a significant amount of work. It is desirable to restrict the schedules to those where cascading rollbacks cannot occur.
A schedule is said to avoid cascading rollback if every transaction in the schedule reads only items that were written by committed transactions. This guarantees that read items will not be discarded.
STRICT SCHEDULE
Transactions can neither read nor write an item X until the last transaction that wrote X has committed or aborted.
Strict schedules simplify the recovery process.
The process of undoing a write (X) operation of an aborted transaction is simply to restore the before image, the old-value for X.
Though this always works correctly for strict schedules, it may not work for recoverable or cascadeless schedules.
EXAMPLE:
Sf: w1(X, 5); w2(X, 8); a1;
Hope this will help.