  Research in transaction processing has made significant progress in improving
the performance of multi-core in-memory transactional systems. However, the
focus has mainly been on low-contention workloads. Modern transactional systems
perform poorly on workloads with transactions accessing a few highly contended
data items. We observe that most transactional workloads, including those with
high contention, can be divided into clusters of data conflict-free
transactions and a small set of residuals. In this paper, we introduce a new
concurrency control protocol called Strife that leverages the above
observation. Strife executes transactions in batches, where each batch is
partitioned into clusters of conflict-free transactions and a small set of
residual transactions. The conflict-free clusters are executed in parallel
without any concurrency control, followed by executing the residual cluster
either serially or with concurrency control. We present a low-overhead
algorithm that partitions a batch of transactions into clusters that do not
have cross-cluster conflicts and a small residual cluster. We evaluate Strife
against the optimistic concurrency control protocol and several variants of
two-phase locking, where the latter is known to perform better than other
concurrency protocols under high contention, and show that Strife can improve
transactional throughput by up to 2x. We also perform an in-depth
micro-benchmark analysis to empirically characterize the performance and
quality of our clustering algorithm
