PMEMgreSQL: Embracing PostgreSQL with Persistent Memory
摘要
Persistent memory (PMem) is a transformative technology that holds the potential to significantly enhance the performance of database systems like PostgreSQL (PG). The emerging persistent memory is promising for boosting database performance because of its byte-addressable persistence with high bandwidth and low latency. However, the integration of PMem with databases is not without its challenges, particularly when considering concurrent processing and Non-Uniform Memory Access (NUMA) architectures. We encounter two unique issues which significantly affect system performance when integrating PMem into PG. Firstly, unrestricted concurrent access to PMem can lead to bandwidth degradation, which negatively impacts overall system performance. Secondly, when data is accessed across different NUMA nodes, performance can suffer due to increased latency. In this case, we propose PMEMgreSQL, embracing PG with persistent memory while solving the two issues above effectively. We first design a PMem-aware parallelism control mechanism which keeps processes accessing PMem in a queued and controlled manner. This approach involves careful scheduling of read and write operations to PMem, preventing the processes from menacing the memory bandwidth. Then we present a cross-NUMA logging interleave strategy which allows parallel logging in PMem devices in different NUMA nodes. This strategy ensures that the logging operation is distributed efficiently, reducing the performance penalty associated with cross-NUMA memory access.