  Hotspots, a small set of tuples frequently read/written by a large number of
transactions, cause contention in a concurrency control protocol. While a
hotspot may comprise only a small fraction of a transaction's execution time,
conventional strict two-phase locking allows a transaction to release lock only
after the transaction completes, which leaves significant parallelism
unexploited. Ideally, a concurrency control protocol serializes transactions
only for the duration of the hotspots, rather than the duration of
transactions. We observe that exploiting such parallelism requires violating
two-phase locking. In this paper, we propose Bamboo, a new concurrency control
protocol that can enable such parallelism by modifying the conventional
two-phase locking, while maintaining the same guarantees in correctness. We
thoroughly analyzed the effect of cascading aborts involved in reading
uncommitted data and discussed optimizations that can be applied to further
improve the performance. Our evaluation on TPC-C shows a performance
improvement up to 4x compared to the best of pessimistic and optimistic
baseline protocols. On synthetic workloads that contain a single hotspot,
Bamboo achieves a speedup up to 19x over baselines.
