Low Overhead Concurrency Control for Partitioned Main Memory Databases
Evan P. C. Jones Daniel J. Abadi Samuel Madden
Low Overhead Concurrency Control for Partitioned Main Memory - - PowerPoint PPT Presentation
Low Overhead Concurrency Control for Partitioned Main Memory Databases Evan P. C. Jones Daniel J. Abadi Samuel Madden Banks Payment Processing Airline Reservations E-Commerce Web 2.0 Problem :
Evan P. C. Jones Daniel J. Abadi Samuel Madden
Source: Stonebraker et. al, “The End of an Architectural Era”, VLDB 2007.
CPU Cycle Breakdown for Shore on TPC-C New Order Source: Harizopoulos, Abadi, Madden and Stonebraker, “OLTP Under the Looking Glass”, SIGMOD 2008
!"# !)# (!"# (!)# $!"# $!)# *!"# *!)#
87',+#
*$%++ ,)--("- ,)'.("- ,/$'0("- 1&22+% 3/"/-+% .+7#
0I=12 I`=L2 0C=I2 0Q=W2 I02 Q=02
concurrency control
! 30-40%
CPU Cycle Breakdown for Shore on TPC-C New Order Source: Harizopoulos, Abadi, Madden and Stonebraker, “OLTP Under the Looking Glass”, SIGMOD 2008
!"# !)# (!"# (!)# $!"# $!)# *!"# *!)#
87',+#
*$%++ ,)--("- ,)'.("- ,/$'0("- 1&22+% 3/"/-+% .+7#
0I=12 I`=L2 0C=I2 0Q=W2 I02 Q=02
concurrency control
! 30-40%
main memory stored procedures partition per core donʼt do them Use idle resources: disk stalls user stalls Physical resources: multiple CPUs multiple disks Long running txns:
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator
Primary Backup 1
Primary Backup 1 2
Primary Backup 1 2 execute
Primary Backup 1 2 3 execute
Primary Backup 1 2 3 4 execute
Primary Backup 1 2 3 4 execute execute
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 1
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 1 2
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 1
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 1 2 2
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 1 2 2
Coordinator P1 Primary P1 Backup 2 1
Coordinator P1 Primary P1 Backup 2 3 1
Coordinator P1 Primary P1 Backup 2 3 1 execute
Coordinator P1 Primary P1 Backup 2 3 1 execute 4
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5 6 6
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5 6 6 execute
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5 6 6 execute network stall
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 3
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4 5 5
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4 5 5 6 6 6
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4 5 5 6 6 6
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5 execute
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5 execute
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5 execute
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5 execute 6 6
Coordinator P1 Primary P1 Backup 2 3 1 execute 4 5 execute 6 6
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 3
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4 5 5
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4 5 5
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4 5 5 6 6 6
H-Store
Partition 2 Partition 2 Client Library Client Library Client Library
Primary Backup
Partition 1 Partition 1
Primary Backup
Coordinator 3 1 2 2 4 3 4 5 5 6 6 6
Primary Backup Primary Backup Partition 1 Partition 2 Coordinator Client Load Generator
¡ (id ¡INTEGER ¡PRIMARY ¡KEY, ¡value ¡INTEGER) ¡
5000 10000 15000 20000 25000 30000 20 40 60 80 100 % Multi-Partition Locking Speculation Blocking Throughput (transactions/s) Locking 40% Conflicts
5000 10000 15000 20000 25000 30000 0% 20% 40% 60% 80% 100% Transactions/second Multi-Partition Transactions Speculation Locking Blocking
5000 10000 15000 20000 25000 30000 2 4 6 8 10 12 14 16 18 20 Warehouses Locking Speculation Blocking Throughput (transactions/s)
5000 10000 15000 20000 25000 2 4 6 8 10 12 14 16 18 20 Transactions/second Warehouses Speculation Blocking Locking
5000 10000 15000 20000 25000 30000 0% 20% 40% 60% 80% 100% Transactions/second Multi-Partition Transactions Speculation 0% aborts Speculation 1% aborts Speculation 3% aborts Speculation 5% aborts Speculation 10% aborts Blocking 10% aborts Locking 10% aborts
5000 10000 15000 20000 25000 30000 0% 20% 40% 60% 80% 100% Transactions/second Multi-Partition Transactions Locking 0% conflict Locking 20% conflict Locking 60% conflict Locking 100% conflict Speculation Blocking
5000 10000 15000 20000 25000 30000 0% 20% 40% 60% 80% 100% Transactions/second Multi-Partition Transactions Speculation Blocking Locking
5000 10000 15000 20000 25000 30000 35000 0% 20% 40% 60% 80% 100% Transactions/second Multi-Partition Transactions Model Blocking Model Speculate Model Locking Measured Blocking Measured Speculate Measured Locking
5000 10000 15000 20000 25000 30000 35000 0% 20% 40% 60% 80% 100% Transactions/second Multi-Partition Transactions Speculation Blocking Locking
5000 10000 15000 20000 25000 30000 0% 20% 40% 60% 80% 100% Transactions/second Multi-Partition Transactions Speculation Local Speculation Blocking Locking Optimistic
5000 10000 15000 20000 25000 2 4 6 8 10 12 14 16 18 20 Transactions/second Warehouses Speculation Blocking Locking Optimistic