2008 · 18 citations · 20 references
ComputingComputer EngineeringComputer ScienceComputer ArchitectureDatabasesStorage SystemsConcurrency ControlData SynchronizationDatabase ManagementPerformance TuningSynchronization PrimitivesConcurrency PrimitivesCritical SectionsDatabase Storage EnginesFine-grained SynchronizationMultiprocessor SynchronizationStorage Engine TuningSynchronization MechanismsSynchronization Semantics
Critical sections in database storage engines impact performance and scalability more as the number of hardware contexts per chip continues to grow exponentially. With enough threads in the system, some critical section will eventually become a bottleneck. While algorithmic changes are the only long-term solution, they tend to be complex and costly to develop. Meanwhile, changes in enforcement of critical sections require much less effort. We observe that, in practice, many critical sections are so short that enforcing them contributes a significant or even dominating fraction of their total cost and tuning them directly improves database system performance. The contribution of this paper is two-fold: we (a) make a thorough performance comparison of the various synchronization primitives in the database system developer's toolbox and highlight the best ones for practical use, and (b) show that properly enforcing critical sections can delay the need to make algorithmic changes for a target number of processors.
20
Maurice Herlihy, J. Eliot B. Moss · 1993 · 2.2K citations
Maurice Herlihy · ACM Transactions on Programming Languages and Systems · 1991 · 1.8K citations · Full text
Nir Shavit, Dan Touitou · 1995 · 1.2K citations · Full text