  This paper presents yet another concurrency control analysis platform,
CCBench. CCBench supports seven protocols (Silo, TicToc, MOCC, Cicada, SI, SI
with latch-free SSN, 2PL) and seven versatile optimization methods and enables
the configuration of seven workload parameters. We analyzed the protocols and
optimization methods using various workload parameters and a thread count of
224. Previous studies focused on thread scalability and did not explore the
space analyzed here. We classified the optimization methods on the basis of
three performance factors: CPU cache, delay on conflict, and version lifetime.
Analyses using CCBench and 224 threads, produced six insights. (I1) The
performance of optimistic concurrency control protocol for a read only workload
rapidly degrades as cardinality increases even without L3 cache misses. (I2)
Silo can outperform TicToc for some write-intensive workloads by using
invisible reads optimization. (I3) The effectiveness of two approaches to
coping with conflict (wait and no-wait) depends on the situation. (I4) OCC
reads the same record two or more times if a concurrent transaction
interruption occurs, which can improve performance. (I5) Mixing different
implementations is inappropriate for deep analysis. (I6) Even a
state-of-the-art garbage collection method cannot improve the performance of
multi-version protocols if there is a single long transaction mixed into the
workload. On the basis of I4, we defined the read phase extension optimization
in which an artificial delay is added to the read phase. On the basis of I6, we
defined the aggressive garbage collection optimization in which even visible
versions are collected. The code for CCBench and all the data in this paper are
available online at GitHub.
