We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

PostgreSQL Entangled in Locks: Attempts to free it

Formale Metadaten

Titel
PostgreSQL Entangled in Locks: Attempts to free it
Serientitel
Anzahl der Teile
19
Autor
Lizenz
CC-Namensnennung 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
Lock contention in PostgreSQL is one of the major woes for scalability concerns on many-core machines. We will discuss our attempts to solve those issues. The discussion will focus mainly on BufferMappingLock, WALWriteLock and CLogControlLock. First, we will describe our experiments wherein we split WALWriteLock in two separate locks — one for WAL write and another for WAL Flush. Next, a lockless implementation of the hash table for BufferMappingLock will be discussed. Finally, the presentation will conclude with a discussion on group clog update concept for reducing LockContention around ClogControlLock. Lock contention in PostgreSQL is one of the major woes for scalability concerns on many-core machines. In the past, several attempts were made to fix different lock contention issues. Some of the contentions were solved to an extent e.g WALInsertLock, ProcArrayLock and BufFreelistLock. Still, there are many lock bottlenecks that remain unsolved mysteries, e.g ClogCotrolLock, WALWriteLock, BufferMappingLock, etc. In this talk, we will present our experiments for wait event test to show the contentions on various locks. We also analysed the effects of these locks on various workloads. We will discuss the experiments done to reduce lock contention of various locks along with their performance results. The discussion will focus mainly on BufferMappingLock, WALWriteLock and CLogControlLock. First, we will describe our experiments wherein we split WALWriteLock in two separate locks — one for WAL write and another for WAL Flush. Next, a lockless implementation of the hash table for BufferMappingLock will be discussed. Finally, the presentation will conclude with a discussion on group clog update concept for reducing LockContention around ClogControlLock.