770 likes | 890 Views
More About Transaction Management. Chapter 10. Contents. Transactions that Read Uncommitted Data View Serializability Resolving Deadlocks Distributed Databases Long-Duration Transactions. The Dirty-Data Problem.
E N D
More About Transaction Management Chapter 10
Contents • Transactions that Read Uncommitted Data • View Serializability • Resolving Deadlocks • Distributed Databases • Long-Duration Transactions
The Dirty-Data Problem Data is “dirty” if it has been written by a transaction that is not yet committed Example 1: A written by T1 is a dirty data ,T2’s reading of A leaves the database with an inconsistent state
T1 T2 A B 25 25 :l1(A);r1(A); A:=A+100; w1(A);l1(B);u1(A); 125 l2(A);r2(A); A:=A*2; w2(A);u2(A); 250 l2(B);Denied r1(B); Abort;u1(B); l2(B); u2(A); r2(B); B:=B*2; w2(B);u2(B) 50 T1 writes dirty data and then aborts
Example 2: • T1 T2 T3 A B C • 150 175 RT=0 RT=0 RT=0 • WT=0 WT=0 WT=0 • w2(B) WT=150 • r1(B) • r2(A) RT=150 • r3(C) RT=175 • w2(C) • Abort WT=0 • w3(A)) WT=175 T1 has read dirty data from T2 and must abort when T2 does
Cascading Rollback • When transaction T aborts,we must find each transaction U that read dirty data from T,abort U,find any transaction V that read dirty data from U,abort V,and so on • Both a timestamp-based scheduler with a commit bit and a validation-based scheduler avoids cascading rollback
Managing Rollbacks • Strict Locking: A transaction must not release any write locks (or other locks, such as increment locks that allow values to be changed) until the transaction has either committed or aborted,and the commit or abort log record had been flushed to disk • A schedule of transactions that obey the strict locking rule is called recoverable
View Serializability Conflict equivalent View equivalent Conflict serializable View serializable
Motivating example Schedule Q T1 T2 T3 Read(A) Write(A) Write(A) Write(A)
P(Q): T1 T2 T3 Not conflict serializable! Same as Q = r1(A) w2(A) w1(A) w3(A)
But now compare Q to Ss, a serial schedule: Q T1 T2 T3 Read(A) Write(A) Write(A) Write(A) Ss T1 T2 T3 Read(A) Write(A) Write(A) Write(A)
T1 reads same thing in Q, Ss • T2,T3 read same thing (nothing?) • After Q or Ss, DB is left in the same state So what is wrong with Q?
Definition Schedules S1,S2 areView Equivalent if: (1) If in S1: wj(A) ri(A) then in S2: wj(A) ri(A) (2) If in S1: ri(A) reads initial DB value, then in S2: ri(A) also reads initial DB value (3) If in S1: Ti does last write on A, then in S2: Ti also does last write on A means “reads value produced”
Definition Schedule S1 is View Serializable if it is view equivalent to some serial schedule
View Serializable Conflict Serializable e.g., See Schedule Q • Conflict Serializable View Serializable ? ? View Conflict Serializable Serializable
Lemma Conflict Serializable View Serializable Proof: Swapping non-conflicting actions does not change what transactions read nor final DB state
Venn Diagram All schedules View Serializable Conflict Serializable
Note: All view serializable schedules that are not conflict serializable, involve useless write S = W2(A) … W3(A)….. no reads
How do we test for view-serializability? P(S) not good enough… (see schedule Q)
w4(A) this action can move if this write exists • One problem: some swaps involving conflicting actions are OK… e.g.: S = ….w2(A)……r1(A).... w3(A)…
Another problem: useless writes S = …..W2(A)…….. W1(A)….. no A reads
To check if S is View Serializable (1) Add final transaction Tf that reads all DB(eliminates condition 3 of V-S definition) E.g.: S = …..W1(A)…….. W2(A)… rf(A) Last A write ? add
(2) Add initial transaction Tb that writes all DB(eliminates condition 2 of V-S definition) E.g.: S = wb(A) ... r1(A) … w2(A) … ? add
0 (3) Create labeled precedence graph of S: (3a) If wi(A) rj(A) in S, add Ti Tj
(3b) For each wi(A) rj(A) do consider each wk(A): [TkTb] - If TiTb TjTf then insert Tk Ti some new p Tj Tk - If Ti=Tb TjTf then insert Tj Tk - If TiTb Tj=Tf then insert Tk Ti p p 0 0
(4) Check if there is some selection from each arc pair that turn s LP(S) into “acyclic” (if so, S is V-S)
rule 3(a) rule 3(b) 0 0 rule 3(b) 0 0 0 0 Example: check if Q is V-S: Q = r1(A) w2(A) w1(A) w3(A) Q’ = wb(A) r1(A) w2(A) w1(A) w3(A) rf(A) T1 T2 Tf Tb LP(S) acyclic!! S is V-S T3
0 0 1 0 0 0 1 0 0 do not pick this one of “1” pair LP(Z) acyclic, so Z is V-S (equivalent to Tb T1 T2 T3 Tf) Another example: Z=wb(A) r1(A) w2(A) r3(A) w1(A) w3(A) rf(A) T1 T2 Tf Tb T3
Deadlocks • Detection • Wait-for graph • Prevention • Resource ordering • Timeout • Wait-die • Wound-wait
Deadlock Detection • Build Wait-For graph • Use lock table structures • Build incrementally or periodically • When cycle found, rollback victim T5 T2 T1 T7 T4 T6 T3
The Waits-For Graph • In the waits-for graph there is an arc from node(transactions) T to node U if there is some database element A such that • U holds a lock on A • T is waiting for a lock on A,and • T cannot get a lock on A in its desired mode unless U first releases its lock on A • If there are no cycles in the waits-for graph, then each transaction can eventually complete • If there is a cycle,then no transaction in the cycle can ever make progress,so there is a deadlock
T1 T2 T3 T4 • 1)l1(A);r1(A) • l2(C);r2(C) • l3(B);r3(B) • l4(D);r4(D) • l2(A);Denied • l3(C);Denied • l4(A);Denied • l1(B);Denied Beginning of a schedule with a deadlock
4 3 2 2 3 1 Waits-for graph after T1 is rolled back Waits-for graph with a cycle caused by step(8)
Deadlock Prevention By Resource Ordering • Order all elements A1, A2, …, An • Every transaction is required to request locks on element in order. Problem : Ordered lock requests not realistic in most cases
Timeout • If transaction waits more than L sec., roll it back! • Simple scheme • Hard to select L
Wait-die • Transactions given a timestamp when they arrive …. ts(Ti) • Ti can only wait for Tj if ts(Ti)< ts(Tj) ...else die
wait? Example: T1 (ts =10) T2 (ts =20) T3 (ts =25) wait wait
Wound-wait • Transactions given a timestamp when they arrive … ts(Ti) • Ti wounds Tj if ts(Ti)< ts(Tj) else Ti waits “Wound”: Tj rolls back and gives lock to Ti
wait Example: T1 (ts =25) T2 (ts =20) T3 (ts =10) wait wait
Comparison of Deadlock Management • Both wound-wait and wait-die are easier to implement than the waits-for graph method. • The waits-for graph method aborts transactions only when there is a deadlock. However, either wound-wait or wait-die will sometimes roll back a transaction when there was no deadlock.
DBMS DBMS DBMS DBMS data data data data Distributed Databases Distributed Database System
Advantages of a DDBS • Speedy Queries by Parallelism • Fault Tolerance by Data Replication Increasing complexity and communication cost
Data Distribution • A bank with many branches • A chain store with many individual stores • A digital library with a consortium of universities
Partitioning a relation among many sites • Horizontal Decomposition • Vertical Decomposition
Parallelism: Pipelining • Example: • T1 SELECT * FROM A WHERE cond • T2 JOIN T1 and B select join A B (with index)
Parallelism: Concurrent Operations • Example: SELECT * FROM A WHERE cond data location is important... merge select select select A where A.x < 10 A where 10 A.x < 20 A where 20 A.x
join strategy Join Processing • Example: JOIN A, B over attribute X B1 B2 A1 A2 A.x < 10 A.x 10 B.x < 10 B.x 10
Join Processing • Example: JOIN A, B over attribute X B1 B2 A1 A2 A.z < 10 A.z 10 B.z < 10 B.z 10 join strategy
Data Replication • Fault Tolerance • Query Speedup Some Problems • How to keep copies identical • How to place copies properly • How to handle communication failure
Distributed Transactions • Transaction components at a different site • Each having the local scheduler and logger