ppt

advertisement
Chapter 15: Transactions




Transaction Concept
Concurrent Executions
Serializability
Testing for Serializability
Transaction Concept

A transaction is a unit of program execution that
accesses and possibly updates various data items.
a1, a2, a3, a4, …, an, commit
consistent

Database may be inconsistent
consistent
Two main issues to deal with:
 Failures of various kinds, such as hardware failures
and system crashes
 Concurrent execution of multiple transactions
a1, a2, a3, a4, …, an, commit
b1, b2, b3, b4, …, bm, commit
c1, c2, c3, c4, …, cl, commit
ACID Properties
To preserve integrity of data, the database system must ensure:




Atomicity
Consistency
Isolation
Durability
Example of Fund Transfer

Transaction to transfer $50 from account A to account B:
1.read(A)
2.A
:= A – 50
3.write(A)
4.read(B)
5.B := B + 50
6.write(B)
7.commit
Atomicity

Either all operations of the transaction are properly reflected
(1) read(A), (2)A := A -50,(3)write(A), (4) read(B), (5)B :=
B + 50, (6)write(B), (7) commit

Or none are
(1) read(A), (2)A := A -50,(3)write(A), (4) read(B), (5)B :=
B + 50
Consistency

A+B = TOT where TOT is a constant value
(1) read(A), (2)A := A -50,(3)write(A), (4) read(B), (5)B :=
B + 50, (6)write(B), (7) commit
A+B= TOT

A+B may not equal to TOT
A+B= TOT
Consistency: DB satisfies all integrity and constraints

Examples:
 - x is key of relation R
 - x  y holds in R
 - Domain(x) = {Red, Blue, Green}
 - a is valid index for attribute x of R
 no employee should make more than twice the average salary

A+B = TOT
Isolation
A+B ≠ TOT?!

Intermediate transaction results
must be hidden from other
concurrently executed
transactions.
T2
(1) read(A), (2)A := A -50,(3)write(A), (4) read(B), (5)B :=
B + 50, (6)write(B), (7) commit
A+B= TOT
A+B may not equal to TOT
A+B= TOT
Durability

After a transaction completes successfully, the changes it has made
to the database persist, even if there are system failures.
(1) read(A), (2)A := A -50,(3)write(A), (4) read(B), (5)B :=
B + 50, (6)write(B), (7) commit
After this point, A and B
are permanently updated
Transaction State





Active
Partially committed
Committed
Failed
Aborted
Transaction State (Cont.)
a1, a2, a3, a4, …, an,
commit
Implementation of Atomicity and
Durability
The shadow-database scheme:


Assumes one transaction at a time
Useful for text editors, but extremely inefficient for large
databases: executing a single transaction requires copying the
entire database.
Storage Hierarchy


Read(x) read x from memory, if it is not in memory yet, read from
disk first
Write(x) writes x to memory and possibly to disk
1.read(A)
2.A
:= A – 50
3.write(A)
4.read(B)
5.B := B + 50
6.write(B)
7.commit
x
Memory
x
Disk
Schedules
T1
T2
Read(A)
Read(A)
A:=A-50
Temp:=A*0.1
Write(A)
A:=A-temp
Read(B)
Write(A)
B:=B+50
Read(B)
Write(B)
B:=B+temp
Write(B)
T1 transfer $50 from A to B
T2 transfer 10% of the balance from A to B
Schedule 1
Read(A)
A:=A-50
Read(A)
Temp:=A*0.1
A:=A-temp
Write(A)
Read(B)
Write(A)
Read(B)
B:=B+50
Write(B)
B:=B+temp
Write(B)
Schedules

Schedules – sequences that indicate the chronological order in
which instructions of concurrent transactions are executed
 a schedule for a set of transactions must consist of all
instructions of those transactions
 must preserve the order in which the instructions appear in each
individual transaction.
Concurrent Executions


Multiple transactions are allowed to run concurrently in the
system
Concurrency control schemes – mechanisms to achieve
isolation, i.e., to control the interaction among the concurrent
transactions in order to prevent them from destroying the
consistency of the database
Serial Schedule

T1 is followed by T2.
Schedule 2
Read(A)
A:=A-50
Write(A)
Read(B)
B:=B+50
Write(B)
Read(A)
Temp:=A*0.1
A:=A-temp
Write(A)
Read(B)
B:=B+temp
Write(B)
A = 100, B = 100
originally
A = ? and B = ?
Example Schedule (Cont.)

Schedule 3 is equivalent to Schedule 1.
Schedule 3
In both Schedule 2
and 3, the sum
A + B is
preserved.
Read(A)
A:=A-50
Write(A)
Read(A)
Temp:=A*0.1
A:=A-temp
Write(A)
Read(B)
B:=B+50
Write(B)
Read(B)
B:=B+temp
Write(B)
A = 100, B = 100
originally
A = ? and B = ?
Example Schedules (Cont.)
Schedule 4
Schedule 4 does
not preserve the
sum A + B
Read(A)
A:=A-50
Read(A)
Temp:=A*0.1
A:=A-temp
Write(A)
Read(B)
Write(A)
Read(B)
B:=B+50
Write(B)
B:=B+temp
Write(B)
A = 100, B = 100
originally
A = ? and B = ?
Where is the mystery?

How to preserve database consistency?
Serializability!
Serializability

A (possibly concurrent) schedule is serializable if it is
equivalent to a serial schedule.
Conflict Serializability



Transactions T1 and T2
Two operations on the same item
Q,
Intuitively, a conflict between T1
and T2 forces a (logical) temporal
order between T1 and T2 .
Conflict?
T2
T1
Read(Q)
Read(Q)
Write(Q)

Two consecutive non-conflict
operations in a schedule can been
interchanged
Write(Q)
Conflict Serializability (Cont.)

If a schedule S can be transformed into a schedule S´ by a
series of swaps of non-conflicting instructions, we say that
S and S´ are conflict equivalent.
Note


Only read and write operations will cause conflict
Other operations (A:=A+10) are on local copy variables and do not
interface with database
Schedule 3
Simplified Schedules
Read(A)
A:=A-50
Write(A)
Write(A)
Read(A)
Read(A)
Write(A)
Temp:=A*0.1
Read(B)
A:=A-temp
Write(B)
Write(A)
Read(B)
Read(B)
Write(B)
B:=B+50
Write(B)
Read(B)
B:=B+temp
Write(B)
Schedule 2
Read(A)
A:=A-50
Write(A)
Write(A)
Read(B)
Read(B)
Write(B)
B:=B+50
Read(A)
Write(B)
Write(A)
Read(A)
Read(B)
Temp:=A*0.1
Write(B)
A:=A-temp
Write(A)
Read(B)
B:=B+temp
Write(B)
Schedule 3 and Schedule 2 are conflict
equivalent
Schedule 3
Schedule 2
Read(A)
Write(A)
Read(A)
Write(A)
Read(B)
Write(B)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Schedule 3 and Schedule 2 are conflict
equivalent
Schedule 3
Schedule 2
Read(A)
Write(A)
Read(A)
Read(B)
Write(A)
Write(B)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Schedule 3 and Schedule 2 are conflict
equivalent
Schedule 3
Schedule 2
Read(A)
Write(A)
Read(A)
Read(B)
Write(B)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Schedule 3 and Schedule 2 are conflict
equivalent
Schedule 3
Schedule 2
Read(A)
Write(A)
Read(B)
Read(A)
Write(B)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Schedule 3 and Schedule 2 are conflict
equivalent
Schedule 3
Schedule 2
Read(A)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
Conflict Serializability (Cont.)


We say that a schedule S is conflict serializable if it is
conflict equivalent to a serial schedule
Schedule 3 is conflict serializable
Conflict Serializability (Cont.)

Example of a schedule that is not conflict serializable:
T3
read(Q)
write(Q)
T4
write(Q)
We are unable to swap instructions in the above schedule
to obtain either the serial schedule < T3, T4 >, or the serial
schedule < T4, T3 >.
Testing for Serializability





Consider some schedule of a set of transactions T1, T2,
..., Tn
Precedence graph — a direct graph where the
vertices are the transactions (names).
We draw an arc from Ti to Tj if the two transaction
conflict, and Ti accessed the data item on which the
conflict arose earlier.
We may label the arc by the item that was accessed.
Example 1
x
y
Example Schedule (Schedule A)
T1
T2
read(X)
T3
T4
T5
read(Y)
read(Z)
read(V)
read(W)
read(W)
read(Y)
write(Y)
write(Z)
read(U)
read(Y)
write(Y)
read(Z)
write(Z)
read(U)
write(U)
Precedence Graph for Schedule A
T1
T3
T2
T4
T5
Test for Conflict Serializability



A schedule is conflict serializable if and only if its precedence graph
is acyclic.
Cycle-detection algorithms exist which take order n2 time, where n
is the number of vertices in the graph. (Better algorithms take
order n + e where e is the number of edges.)
If precedence graph is acyclic, the serializability order can be
obtained by a topological sorting of the graph. This is a linear order
consistent with the partial order of the graph.
For example, a serializability order for Schedule A would be
T 5  T1  T3  T2  T4 .
Concurrency Control vs. Serializability
Tests



Testing a schedule for serializability after it has executed is a little
too late!
Goal – to develop concurrency control protocols that will assure
serializability. They will generally not examine the precedence
graph as it is being created; instead a protocol will impose a
discipline that avoids nonseralizable schedules.
Tests for serializability help understand why a concurrency control
protocol is correct.
Download