Lock managers are among the most well-studied components in concurrency control and transactional systems. However, one question seems to have been generally overlooked: “when there are multiple lock requests on the same object, which one(s) should be granted first?”
Nearly all existing systems rely on a FIFO (first in, first out) strategy to decide which transaction(s) to grant the lock to. However, in this paper, we show that the choice of lock scheduling has significant ramifications on the overall performance of a transactional system. Despite the large body of research on job scheduling outside the database context, lock scheduling presents subtle but challenging requirements that render existing results on scheduling inapt for a transactional database. By carefully studying this prob- lem, we present the concept of contention-aware scheduling, show the hardness of the problem, and propose novel lock scheduling algorithms (LDSF and bLDSF), which guarantee a constant factor approximation of the best scheduling. We conduct extensive experiments using a popular database on both TPC-C and a microbenchmark. Compared to FIFO— the default scheduler in most database systems—our bLDSF algorithm yields up to 300x speedup in overall transaction latency. On the other hand, our LDSF algorithm, which is simpler and achieves comparable performance to bLDSF, has already been adopted by open-source community, and chosen as default scheduling strategy in MySQL 8.0.3
27. WHAT DOES EACH LABEL MEAN?
L(O, T) = S
MEANS T HOLDS A SHARED LOCK
27
28. WHAT DOES EACH LABEL MEAN?
L(O, T) = S
MEANS T HOLDS A SHARED LOCK
L(T, O) = S
MEANS T IS WAITING FOR A SHARED LOCK
28
29. WHAT DOES EACH LABEL MEAN?
L(O, T) = S
MEANS T HOLDS A SHARED LOCK
L(T, O) = S
MEANS T IS WAITING FOR A SHARED LOCK
L(O, T) = S
MEANS T HOLDS AN EXCLUSIVE LOCK
29
30. WHAT DOES EACH LABEL MEAN?
L(O, T) = S
MEANS T HOLDS A SHARED LOCK
L(T, O) = S
MEANS T IS WAITING FOR A SHARED LOCK
L(O, T) = S
MEANS T HOLDS AN EXCLUSIVE LOCK
L(T, O) = X
MEANS T IS WAITING FOR AN EXCLUSIVE LOCK
30
31. DEPENDENCY
GRAPH IS A
DAG ON
NO DEADLOCK
LET’S ASSUME DEADLOCKS
ARE RARE AND ARE
HANDLED BY AN EXTERNAL
PROCESS.
31
57. CONTENTION CRITERION
NUMBER OF LOCKS HELD
NUMBER OF LOCKS THAT BLOCK OTHER TRANSACTIONS
MOST LOCKS FIRST (MLF)
MOST BLOCKING LOCKS FIRST (MBLF)
57
58. CONTENTION CRITERION
NUMBER OF LOCKS HELD
NUMBER OF LOCKS THAT BLOCK OTHER TRANSACTIONS
DEPTH OF THE DEPENDENCY SUBGRAPH
MOST LOCKS FIRST (MLF)
MOST BLOCKING LOCKS FIRST (MBLF)
58
59. CONTENTION CRITERION
NUMBER OF LOCKS HELD
NUMBER OF LOCKS THAT BLOCK OTHER TRANSACTIONS
DEPTH OF THE DEPENDENCY SUBGRAPH
MOST LOCKS FIRST (MLF)
MOST BLOCKING LOCKS FIRST (MBLF)
DEEPEST DEPENDENCY FIRST (DDF)
59
68. LET’S TAKE A LOOK AT
CALCULATION
SEARCHING DOWN THE REVERSE EDGES IN THE
DEPENDENCY GRAPH!
68
69. LET’S TAKE A LOOK AT
CALCULATION
SEARCHING DOWN THE REVERSE EDGES IN THE
DEPENDENCY GRAPH!
WHEN?
69
70. LET’S TAKE A LOOK AT
CALCULATION
SEARCHING DOWN THE REVERSE EDGES IN THE
DEPENDENCY GRAPH!
WHEN?
WHENEVER A SCHEDULING DECISION IS TO BE MADE
70
71. LET’S TAKE A LOOK AT
CALCULATION
SEARCHING DOWN THE REVERSE EDGES IN THE
DEPENDENCY GRAPH!
WHEN?
WHENEVER A SCHEDULING DECISION IS TO BE MADE
😒
71
72. LET’S TAKE A LOOK AT
CALCULATION
SEARCHING DOWN THE REVERSE EDGES IN THE
DEPENDENCY GRAPH!
WHEN?
WHENEVER A SCHEDULING DECISION IS TO BE MADE
😒
IN THE WORSE CASE,
SIZING OF A SINGLE TRANSACTION TAKES O(|E|+|V|) TIME.
72
73. LET’S TAKE A LOOK AT
CALCULATION
SEARCHING DOWN THE REVERSE EDGES IN THE
DEPENDENCY GRAPH!
WHEN?
WHENEVER A SCHEDULING DECISION IS TO BE MADE
😒
IN THE WORSE CASE,
SIZING OF A SINGLE TRANSACTION TAKES O(|E|+|V|) TIME.
IT’S DAMN SLOW!
73
75. OK, STORING SHOULD TACKLE!
STORING THE DEPENDENCY SETS FOR ALL TRANSACTIONS AND
UPDATING THEM
75
76. OK, STORING SHOULD TACKLE!
STORING THE DEPENDENCY SETS FOR ALL TRANSACTIONS AND
UPDATING THEM
HOW MUCH ROOM DO YOU NEED? 🤔
76
77. OK, STORING SHOULD TACKLE!
STORING THE DEPENDENCY SETS FOR ALL TRANSACTIONS AND
UPDATING THEM
HOW MUCH ROOM DO YOU NEED? 🤔
STORING THE DEPENDENCY SET REQUIRES O(V) SPACE
77
78. OK, STORING SHOULD TACKLE!
STORING THE DEPENDENCY SETS FOR ALL TRANSACTIONS AND
UPDATING THEM
HOW MUCH ROOM DO YOU NEED? 🤔
STORING THE DEPENDENCY SET REQUIRES O(V) SPACE
HMM, SOUNDS FEASIBLE!
78
79. OK, STORING SHOULD TACKLE!
STORING THE DEPENDENCY SETS FOR ALL TRANSACTIONS AND
UPDATING THEM
HOW MUCH ROOM DO YOU NEED? 🤔
UPDATE? WHEN SHOULD BE DONE?
STORING THE DEPENDENCY SET REQUIRES O(V) SPACE
HMM, SOUNDS FEASIBLE!
79
80. OK, STORING SHOULD TACKLE!
STORING THE DEPENDENCY SETS FOR ALL TRANSACTIONS AND
UPDATING THEM
EACH TIME ANY TRANSACTION IS BLOCKED
OR A LOCK IS GRANTED
HOW MUCH ROOM DO YOU NEED? 🤔
UPDATE? WHEN SHOULD BE DONE?
STORING THE DEPENDENCY SET REQUIRES O(V) SPACE
HMM, SOUNDS FEASIBLE!
80
81. OK, STORING SHOULD TACKLE!
STORING THE DEPENDENCY SETS FOR ALL TRANSACTIONS AND
UPDATING THEM
EACH TIME ANY TRANSACTION IS BLOCKED
OR A LOCK IS GRANTED
HOW MUCH ROOM DO YOU NEED? 🤔
UPDATE? WHEN SHOULD BE DONE?
NO WAY 😞
STORING THE DEPENDENCY SET REQUIRES O(V) SPACE
HMM, SOUNDS FEASIBLE!
81
87. IN A NUTSHELL
BY RESOLVING CONTENTION MUCH
MORE EFFECTIVELY THAN FIFO AND
VATS, LDSF IMPROVES
THROUGHPUT BY UP TO 6.5X (BY
4.5X ON AVERAGE) OVER FIFO, AND
BY UP TO 2X (1.5X ON AVERAGE)
OVER VATS
87
88. IN A NUTSHELL
BY RESOLVING CONTENTION MUCH
MORE EFFECTIVELY THAN FIFO AND
VATS, LDSF IMPROVES
THROUGHPUT BY UP TO 6.5X (BY
4.5X ON AVERAGE) OVER FIFO, AND
BY UP TO 2X (1.5X ON AVERAGE)
OVER VATS
LDSF CAN REDUCE MEAN TRANSACTION
LATENCIES BY UP TO 300X AND 80X (30X
AND 3.5X, ON AVERAGE) COMPARED TO
FIFO AND VATS, RESPECTIVELY. IT ALSO
REDUCES THE 99TH PERCENTILE LATENCY
BY UP TO 190X AND 16X, COMPARED TO
FIFO AND VATS, RESPECTIVELY
88
89. IN A NUTSHELL
BY RESOLVING CONTENTION MUCH
MORE EFFECTIVELY THAN FIFO AND
VATS, LDSF IMPROVES
THROUGHPUT BY UP TO 6.5X (BY
4.5X ON AVERAGE) OVER FIFO, AND
BY UP TO 2X (1.5X ON AVERAGE)
OVER VATS
LDSF CAN REDUCE MEAN TRANSACTION
LATENCIES BY UP TO 300X AND 80X (30X
AND 3.5X, ON AVERAGE) COMPARED TO
FIFO AND VATS, RESPECTIVELY. IT ALSO
REDUCES THE 99TH PERCENTILE LATENCY
BY UP TO 190X AND 16X, COMPARED TO
FIFO AND VATS, RESPECTIVELY
LDSF OUTPERFORMS VARIOUS
HEURISTICS BY 2.5X IN TERMS OF
THROUGHPUT, AND BY UP TO 100X
(8X ON AVG.) IN TERMS OF
TRANSACTION LATENCY.
89
90. IN A NUTSHELL
BY RESOLVING CONTENTION MUCH
MORE EFFECTIVELY THAN FIFO AND
VATS, LDSF IMPROVES
THROUGHPUT BY UP TO 6.5X (BY
4.5X ON AVERAGE) OVER FIFO, AND
BY UP TO 2X (1.5X ON AVERAGE)
OVER VATS
LDSF CAN REDUCE MEAN TRANSACTION
LATENCIES BY UP TO 300X AND 80X (30X
AND 3.5X, ON AVERAGE) COMPARED TO
FIFO AND VATS, RESPECTIVELY. IT ALSO
REDUCES THE 99TH PERCENTILE LATENCY
BY UP TO 190X AND 16X, COMPARED TO
FIFO AND VATS, RESPECTIVELY
LDSF OUTPERFORMS VARIOUS
HEURISTICS BY 2.5X IN TERMS OF
THROUGHPUT, AND BY UP TO 100X
(8X ON AVG.) IN TERMS OF
TRANSACTION LATENCY.
THE ALGORITHMS REDUCE QUEUE
LENGTH BY REDUCING
CONTENTION, AND THUS INCUR
MUCH LESS OVERHEAD THAN FIFO.
HOWEVER, THEIR OVERHEAD IS
LARGER THAN VATS
90