Leveraging Lock Contention to Improve Transaction Applications
Cong Yan Alvin Cheung University of Washington
1
Leveraging Lock Contention to Improve Transaction Applications - - PowerPoint PPT Presentation
Leveraging Lock Contention to Improve Transaction Applications Cong Yan Alvin Cheung University of Washington 1 Background Database transactions Airline ticket reservation, banking, online shopping... 2 Background Database
Cong Yan Alvin Cheung University of Washington
1
shopping...
2
shopping...
3
atomicity and consistency
Time
4
select(Echo) update(Echo.num) select(Alice) update(Alice.bal) select(Echo) update(Echo.num) select(Cong) update(Cong.bal)
5
select(Echo) update(Echo.num) select(Alice) update(Alice.bal) select(Echo) update(Echo.num) select(Cong) update(Cong.bal)
6
select(Echo)
Execution time
7
select(Echo) update(Echo.num) select(Echo)
Execution time
8
select(Echo) select(Echo) select(Alice) (Waiting for lock) update(Echo.num)
Execution time
9
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal)
Execution time
10
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal)
11
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal)
12
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num)
13
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong)
14
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong) update(Cong.bal)
15
*: “Staring into the abyss, An Evaluation of Concurrency Control with One-thousand Cores”, VLDB-14
transactions shortens lock waiting time
OCC, MVCC
contention(*)
16
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong) update(Cong.bal)
select(Alice)
17
Execution time
select(Alice) select(Cong)
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong) update(Cong.bal)
18
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong) update(Cong.bal)
select(Alice) update(Alice.bal) select(Cong)
19
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong) update(Cong.bal)
select(Alice) update(Alice.bal) select(Echo) update(Cong.bal) select(Cong)
20
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong) update(Cong.bal)
select(Alice) update(Alice.bal) select(Echo) update(Echo.num) select(Echo) update(Cong.bal) select(Cong)
21
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong) update(Cong.bal)
select(Alice) update(Alice.bal) select(Echo) update(Echo.num) select(Echo) update(Cong.bal) select(Cong) (Waiting for lock)
22
Execution time
select(Echo) update(Echo.num) select(Echo) select(Alice) (Waiting for lock) update(Alice.bal) update(Echo.num) select(Cong) update(Cong.bal)
select(Alice) update(Alice.bal) select(Echo) update(Echo.num) select(Echo) update(Cong.bal) select(Cong) (Waiting for lock) update(Echo.num)
23
24
# Shorter latency # Higher throughput
25
transactions based on data contention
26
Profile the application Reorder queries Analyze application code Input: C++ transaction code with embedded SQL queries Output: C++ code with reordered SQL queries
27
contentious data
28
Statement ¡1 ¡should ¡appear ¡ before ¡statement ¡2
Statement ¡1 ¡should ¡appear ¡ before ¡statement ¡3
29
in transactions
30
in transactions
31
Optimization problem!
seconds
in transactions
32
33
contention contention
latency: -83% latency: -70%
34
contention contention
latency: -75% latency: -66%
35
36
37
38
39
40
transaction performance.
contention, and automatically reorders the queries.
throughput up to 6.53x, and can be applied to a wide range of applications.
(congy@cs.washington.edu).
41