1
Lecture 4: Transactions
Wednesday, October 20, 2010
Dan Suciu -- CSEP544 Fall 2010
Lecture 4: Transactions Wednesday, October 20, 2010 Dan Suciu -- - - PowerPoint PPT Presentation
Lecture 4: Transactions Wednesday, October 20, 2010 Dan Suciu -- CSEP544 Fall 2010 1 Homework 3 The key concepts here: Connect to db and call SQL from java Dependent joins Integrate two databases Transactions Amount of
1
Dan Suciu -- CSEP544 Fall 2010
2
Dan Suciu -- CSEP544 Fall 2010 3
4
Dan Suciu -- CSEP544 Fall 2010
Dan Suciu -- CSEP544 Fall 2010 5
6
Dan Suciu -- CSEP544 Fall 2010
7 Dan Suciu -- CSEP544 Fall 2010
8 Dan Suciu -- CSEP544 Fall 2010
9
Dan Suciu -- CSEP544 Fall 2010
10
Dan Suciu -- CSEP544 Fall 2010
11
Dan Suciu -- CSEP544 Fall 2010
12
Client 1: transfer $100 acc1 acc2 X = Account1.balance Account2.balance += 100 If (X>=100) Account1.balance −=100 else { /* rollback ! */ account2.balance −= 100 println(“Denied !”)
Dan Suciu -- CSEP544 Fall 2010
Client 2: transfer $100 acc2 acc3 Y = Account2.balance Account3.balance += 100 If (Y>=100) Account2.balance −=100 else { /* rollback ! */ account3.balance −= 100 println(“Denied !”)
13
14
Dan Suciu -- CSEP544 Fall 2010
Dan Suciu -- CSEP544 Fall 2010 15
16
Dan Suciu -- CSEP544 Fall 2010
17
Dan Suciu -- CSEP544 Fall 2010
18
Dan Suciu -- CSEP544 Fall 2010
19
Dan Suciu -- CSEP544 Fall 2010
20
21
Dan Suciu -- CSEP544 Fall 2010
22
Dan Suciu -- CSEP544 Fall 2010
23
Dan Suciu -- CSEP544 Fall 2010
24
– Seek time = time for the head to reach cylinder
– Rotational latency = time for the sector to rotate
Dan Suciu -- CSEP544 Fall 2010
25
Dan Suciu -- CSEP544 Fall 2010 26
Dan Suciu -- CSEP544 Fall 2010 27
Dan Suciu -- CSEP544 Fall 2010 28
29
30
Dan Suciu -- CSEP544 Fall 2010
31
Dan Suciu -- CSEP544 Fall 2010
32
Dan Suciu -- CSEP544 Fall 2010
33
Dan Suciu -- CSEP544 Fall 2010
34
Action t Mem A Mem B Disk A Disk B INPUT(A) 8 8 8 READ(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 INPUT(B) 16 16 8 8 8 READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16
Buffer pool Disk Transaction READ(A,t); t := t*2; WRITE(A,t); READ(B,t); t := t*2; WRITE(B,t)
35
Action t Mem A Mem B Disk A Disk B INPUT(A) 8 8 8 READ(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 INPUT(B) 16 16 8 8 8 READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16
36
Dan Suciu -- CSEP544 Fall 2010
37
Dan Suciu -- CSEP544 Fall 2010
38
Action T Mem A Mem B Disk A Disk B Log <START T> INPUT(A) 8 8 8 READ(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 <T,A,8>
INPUT(B) 16 16 8 8 8
READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 <T,B,8> OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16 COMMIT <COMMIT T>
39
Action T Mem A Mem B Disk A Disk B Log <START T> INPUT(A) 8 8 8 READ(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 <T,A,8>
INPUT(B) 16 16 8 8 8
READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 <T,B,8> OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16 COMMIT <COMMIT T>
40
Action T Mem A Mem B Disk A Disk B Log <START T> INPUT(A) 8 8 8 READ(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 <T,A,8>
INPUT(B) 16 16 8 8 8
READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 <T,B,8> OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16 COMMIT <COMMIT T>
41
Dan Suciu -- CSEP544 Fall 2010
42
Dan Suciu -- CSEP544 Fall 2010
43
Action T Mem A Mem B Disk A Disk B Log <START T> INPUT(A) 8 8 8 READ(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 <T,A,8>
INPUT(B) 16 16 8 8 8
READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 <T,B,8> OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16 COMMIT <COMMIT T>
44
Dan Suciu -- CSEP544 Fall 2010
45
Dan Suciu -- CSEP544 Fall 2010
46
47
Dan Suciu -- CSEP544 Fall 2010
48
Dan Suciu -- CSEP544 Fall 2010
49
Dan Suciu -- CSEP544 Fall 2010
50
… … <T9,X9,v9> … … (all completed) <CKPT> <START T2> <START T3 <START T5> <START T4> <T1,X1,v1> <T5,X5,v5> <T4,X4,v4> <COMMIT T5> <T3,X3,v3> <T2,X2,v2>
transactions T2,T3,T4,T5
51
52
Dan Suciu -- CSEP544 Fall 2010
53
… … … … … … <START CKPT T4, T5, T6> … … … … <END CKPT> … … …
T4, T5, T6, plus later transactions earlier transactions plus T4, T5, T6 later transactions
54 Dan Suciu -- CSEP544 Fall 2010
55
Dan Suciu -- CSEP544 Fall 2010
56
Action T Mem A Mem B Disk A Disk B Log <START T> READ(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 <T,A,16> READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 <T,B,16> <COMMIT T> OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16
57
Dan Suciu -- CSEP544 Fall 2010
58
Action T Mem A Mem B Disk A Disk B Log <START T> READ(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 <T,A,16> READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 <T,B,16> <COMMIT T> OUTPUT(A) 16 16 16 16 8 OUTPUT(B) 16 16 16 16 16
59
60
Dan Suciu -- CSEP544 Fall 2010
61
Dan Suciu -- CSEP544 Fall 2010
62
… <START T1> … <COMMIT T1> … <START T4> … <START CKPT T4, T5, T6> … … … … <END CKPT> … … … <START CKPT T9, T10> …
All OUTPUTs
to be on disk
63
– OUTPUT must be done early – If <COMMIT T> is seen, T definitely has written all its data to disk (hence, don’t need to redo) – inefficient
– OUTPUT must be done late – If <COMMIT T> is not seen, T definitely has not written any
need to undo) – inflexible
Dan Suciu -- CSEP544 Fall 2010
64
Dan Suciu -- CSEP544 Fall 2010
65
Dan Suciu -- CSEP544 Fall 2010
66
Action T Mem A Mem B Disk A Disk B Log <START T> REAT(A,t) 8 8 8 8 t:=t*2 16 8 8 8 WRITE(A,t) 16 16 8 8 <T,A,8,16> READ(B,t) 8 16 8 8 8 t:=t*2 16 16 8 8 8 WRITE(B,t) 16 16 16 8 8 <T,B,8,16> OUTPUT(A) 16 16 16 16 8 <COMMIT T> OUTPUT(B) 16 16 16 16 16
67
Dan Suciu -- CSEP544 Fall 2010
68
<START T1> <T1,X1,v1> <START T2> <T2, X2, v2> <START T3> <T1,X3,v3> <COMMIT T2> <T3,X4,v4> <T1,X5,v5> … …
Dan Suciu -- CSEP544 Fall 2010
69 Dan Suciu -- CSEP544 Fall 2010
70
Dan Suciu -- CSEP544 Fall 2010
71
Dan Suciu -- CSEP544 Fall 2010
Dan Suciu -- CSEP544 Fall 2010 72
73 Dan Suciu -- CSEP544 Fall 2010
74 Dan Suciu -- CSEP544 Fall 2010
75 Dan Suciu -- CSEP544 Fall 2010
76 Dan Suciu -- CSEP544 Fall 2010
Dan Suciu -- CSEP544 Fall 2010 77
78 Dan Suciu -- CSEP544 Fall 2010
79 Dan Suciu -- CSEP544 Fall 2010
80
Dan Suciu -- CSEP544 Fall 2010
81 Dan Suciu -- CSEP544 Fall 2010
82 Dan Suciu -- CSEP544 Fall 2010
83 Dan Suciu -- CSEP544 Fall 2010
Dan Suciu -- CSEP544 Fall 2010 84
85 Dan Suciu -- CSEP544 Fall 2010
87 Dan Suciu -- CSEP544 Fall 2010
88 Dan Suciu -- CSEP544 Fall 2010
89 Dan Suciu -- CSEP544 Fall 2010
90 Dan Suciu -- CSEP544 Fall 2010
91 Dan Suciu -- CSEP544 Fall 2010
92 Dan Suciu -- CSEP544 Fall 2010
93
W1(X) W2(X) W2(Y) CO2 W1(Y) CO1 W3(Y) CO3
W1(X) W1(Y) CO1 W2(X) W2(Y) CO2 W3(Y) CO3
Lost
Dan Suciu -- CSEP544 Fall 2010
94 Dan Suciu -- CSEP544 Fall 2010
Dan Suciu -- CSEP544 Fall 2010 95
96 Dan Suciu -- CSEP544 Fall 2010
97
Dan Suciu -- CSEP544 Fall 2010
98 Dan Suciu -- CSEP544 Fall 2010
99
100 Dan Suciu -- CSEP544 Fall 2010
101
102 Dan Suciu -- CSEP544 Fall 2010