NICTA
Seoul National University
University of Sydney
UNSW
Modern implementations of DBMS software are intended to take advantage of high core counts that are becoming common in high-end servers. However, we have observed that several database platforms, including MySQL, Shore-MT, and a commercial system, exhibit throughput collapse as load increases, even for a workload with little or no logical contention for locks. Our analysis of MySQL identifies latch contention within the lock manager as the bottleneck responsible for this collapse.
We design a lock manager with reduced latching, implement it in MySQL, and show that it avoids the collapse and generally improves performance. Our efficient implementation of a lock manager is enabled by a staged allocation and de-allocation of locks. Locks are pre-allocated in bulk, so that the lock manager only has to perform simple list-manipulation operations during the acquire and release phases of a transaction. De-allocation of the lock data-structures is also performed in bulk, which enables the use of fast implementations of lock acquisition and release, as well as concurrent deadlock checking.
@inproceedings{Jung_HFHY_13, address = {New York, USA}, author = {Jung, Hyungsoo and Han, Hyuck and Fekete, Alan and Heiser, Gernot and Yeom, Heon Y.}, booktitle = {ACM SIGMOD Conference}, doi = {10.1145/2463676.2465271}, month = jun, pages = {73--84}, paperurl = {https://trustworthy.systems/publications/nicta_full_text/6465.pdf}, slides = {https://trustworthy.systems/publications/nicta_slides/6465.pdf}, title = {A Scalable Lock Manager for Multicores}, year = {2013} }