Even if we have a distributed system that provides atomic operations, we sometimes want to group a sequence of operations in a transaction where:
The lost update problem occurs when two transactions read the old value of a variable and then use it to calculate the new value. It cannot occur if the retrieval transaction is performed before or after the update transaction.
Serial equivalence is used as a criterion for the derivation of concurrency control protocols. These protocols attempt to serialize transactions in their access to objects:
The ‘dirty read’ problem is caused by the interaction between a read operation in one transaction and an earlier write operation in another transaction on the same object. In the case that p aborts, then q must abort as well.
Allow for the fact that a transaction may abort by preventing it affecting other concurrent transactions if it does so. ***The isolation property of transactions requires that transactions do not see the uncommitted state of other transactions.
To avoid cascading aborts, transactions are only allowed to read objects that were written by committed transactions. To ensure that this is the case, any read operation must be delayed until other transactions that applied a write operation to the same object have committed or aborted.
check my reads with committed writes.
Validate a transaction by comparing all:
check later reads with my (uncommitted) writes.
Validate a transaction by comparing all: