非易失性WAL buffer

今天看到PG邮件列表里有非易失性内存在PG应用的讨论,做下记录,接着学习其补丁,如何将WAL buffer改造成非易失性buffer,以及和之前有和区别。该补丁是也是日本NTT公司提供。

一、原文

https://www.postgresql.org/message-id/[email protected]_1

Non-volatile WAL BUFFER

提出了一个概念证明的新特性:“非易失WAL buffer”。通过将非易失内存(PMEM)替代DRAM,不需要将WAL记录写入WAL段文件即可将其持久化。减少了WAL拷贝和write事务的时间,从而提升数据库性能。

完成此功能的补丁基于PG12(refs/tags/REL_12_0),附在后文。阅读README.nvwal(patch 0003)了解如何使用该特性。

PMEM[1]可插到DIMM槽,具有快速、非易失、字节寻址的特性。已生产有该特性的产品。NVDIMM-N是PMEM模块的一种,包含DRAM和NAND flash,可以像访问DRAM一样访问NVDIMM-N。断点时,将内容写到flash域。加电重启时将flash内容重新拷贝回去即DRAM。大多数操作系统linux和windows都支持PMEM和持久内存开发集(PMDK)[2]。未来数据库管理系统也将支持PMEM。

PMEM比SSD更快,原生支持作为块存储使用。但是传统的软件栈并不能将其红利充分发挥出来,比如用户buffers、文件系统和块层。非易失WAL buffer使PG适配PMEM,即像访问RAM一样直接访问PMEM,获得最大的效益。PG现有WAL buffer机制是针对慢速存储设备HDD、SSD设计的,所以WAL是适配PMEM重新设计数据库的重要的一个模块。

我们的灵感来自2016年的PGCon大会提出的“Non--volatile Memory Logging”[3],比我和Yoshimi之前工作[4][5]更具效率。我在今年的PGCon大会上提交了一个议题,评估分析非易失WAL buffer的性能。如果该议题被接收,我将在大会上和大家讨论该议题。

[1] Persistent Memory (SNIA)

      https://www.snia.org/PM

[2] Persistent Memory Development Kit (pmem.io)

      https://pmem.io/pmdk/

[3] Non-volatile Memory Logging (PGCon 2016)

      https://www.pgcon.org/2016/schedule/track/Performance/945.en.html

[4] Introducing PMDK into PostgreSQL (PGCon 2018)

      https://www.pgcon.org/2018/schedule/events/1154.en.html

[5] Applying PMDK to WAL operations for persistent memory (pgsql-hackers)

  https://www.postgresql.org/message-id/[email protected]

补丁

补丁

内容类型

大小

0001-Support-GUCs-for-external-WAL-buffer.patch

application/octet-stream

25.9kb

0002-Non-volatile-WAL-buffer.patch

application/octet-stream

44.8kb

0003-README-for-non-volatile-WAL-buffer.patch

application/octet-stream

6.6kb

发布了289 篇原创文章 · 获赞 85 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/yanzongshuai/article/details/104116169