ch17 (DBMS)
ch17 (DBMS)
▪ Transaction Concept
▪ Transaction State
▪ Concurrent Executions
▪ Serializability
▪ Recoverability
▪ Implementation of Isolation
▪ Transaction Definition in SQL
▪ Testing for Serializability.
T1 T2
1. read(A)
2. A := A – 50
3. write(A)
read(A), read(B), print(A+B)
4. read(B)
5. B := B + 50
6. write(B
▪ Isolation can be ensured trivially by running transactions serially
• That is, one after the other.
▪ However, executing multiple transactions concurrently has significant
benefits, as we will see later.
▪ Active – the initial state; the transaction stays in this state while it is
executing
▪ Partially committed – after the final statement has been executed.
▪ Failed -- after the discovery that normal execution can no longer proceed.
▪ Aborted – after the transaction has been rolled back and the database
restored to its state prior to the start of the transaction. Two options after
it has been aborted:
• Restart the transaction
▪ Can be done only if no internal logical error
• Kill the transaction
▪ Committed – after successful completion.
▪ Let T1 transfer $50 from A to B, and T2 transfer 10% of the balance from
A to B.
▪ A serial schedule in which T1 is followed by T2 :
Schedule 3 Schedule 6
▪ Let S and S’ be two schedules with the same set of transactions. S and S’
are view equivalent if the following three conditions are met, for each data
item Q,
1. If in schedule S, transaction Ti reads the initial value of Q, then in
schedule S’ also transaction Ti must read the initial value of Q.
2. If in schedule S transaction Ti executes read(Q), and that value was
produced by transaction Tj (if any), then in schedule S’ also
transaction Ti must read the value of Q that was produced by the
same write(Q) operation of transaction Tj .
3. The transaction (if any) that performs the final write(Q) operation in
schedule S must also perform the final write(Q) operation in schedule
S’.
▪ As can be seen, view equivalence is also based purely on reads and writes
alone.
▪ If T8 should abort, T9 would have read (and possibly shown to the user) an
inconsistent database state. Hence, database must ensure that schedules
are recoverable.
▪ A database must provide a mechanism that will ensure that all possible
schedules are
• either conflict or view serializable, and
• are recoverable and preferably cascadeless
▪ A policy in which only one transaction can execute at a time generates
serial schedules, but provides a poor degree of concurrency
• Are serial schedules recoverable/cascadeless?
▪ Testing a schedule for serializability after it has executed is a little too late!
▪ Goal – to develop concurrency control protocols that will assure
serializability.
▪ Serializable — default
▪ Repeatable read — only committed records to be read.
• Repeated reads of same record must return same value.
• However, a transaction may not be serializable – it may find some
records inserted by a transaction but not find others.
▪ Read committed — only committed records can be read.
• Successive reads of record may return different (but committed)
values.
▪ Read uncommitted — even uncommitted records may be read.
▪ Locking
• Lock on whole database vs lock on items
• How long to hold lock?
• Shared vs exclusive locks
▪ Timestamps
• Transaction timestamp assigned e.g. when a transaction begins
• Data items store two timestamps
▪ Read timestamp
▪ Write timestamp
• Timestamps are used to detect out of order accesses
▪ Multiple versions of each data item
• Allow transactions to read from a “snapshot” of the database