非易失性WAL buffer

简介: 非易失性WAL buffer

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


一、原文


https://www.postgresql.org/message-id/002f01d5d28d$23c01430$6b403c90$@hco.ntt.co.jp_1


Non-volatile WAL BUFFER


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

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

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

PMEMSSD更快,原生支持作为块存储使用。但是传统的软件栈并不能将其红利充分发挥出来,比如用户buffers、文件系统和块层。非易失WAL buffer使PG适配PMEM,即像访问RAM一样直接访问PMEM,获得最大的效益。PG现有WAL buffer机制是针对慢速存储设备HDDSSD设计的,所以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/C20D38E97BCB33DAD59E3A1@lab.ntt.co.jp


补丁


补丁

内容类型

大小

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

目录
打赏
0
1
1
0
353
分享
相关文章
|
10月前
|
使用EEPROM断电保存数据
本文介绍了Arduino中EEPROM的使用,EEPROM是一种非易失性存储器,用于在断电后保留数据。Arduino的各种控制器如UNO、duemilanove等内置或可外接EEPROM,容量不同。Arduino库提供了`EEPROM.h`来支持读写操作。示例代码展示了如何写入、读取和清除EEPROM的内容。写入时,通过`EEPROM.write()`函数将模拟输入值存入指定地址;读取时,用`EEPROM.read()`函数获取地址处的值;清除则遍历所有地址并写入0。
210 5
AutoMQ 如何基于裸设备实现高性能的 WAL
AutoMQ是基于S3 Stream的Apache Kafka云原生解决方案,利用云盘和对象存储实现低延迟、高吞吐、低成本流式存储。Delta WAL是其核心组件,作为持久化写入缓冲区,先在云盘上做高效持久化,再上传至对象存储。Delta WAL采用Direct IO在裸设备上读写,避免Page Cache污染,提高写入性能,加快宕机恢复速度。设计目标包括轮转写入、充分利用云盘性能和快速恢复。其写入和恢复流程涉及WALHeader、RecordHeader和SlidingWindow数据结构。基准测试显示,Delta WAL能充分利用云盘资源,实现高吞吐和低延迟。
147 0
AutoMQ 如何基于裸设备实现高性能的 WAL
非易失性WAL buffer实现解析(五)
非易失性WAL buffer实现解析(五)
74 0
非易失性WAL buffer实现解析(三)
非易失性WAL buffer实现解析(三)
77 0
非易失性WAL buffer实现解析(二)
非易失性WAL buffer实现解析(二)
76 0
第五次笔记:SRAM和DRAM 栅极电容 双稳态触发器 DRAM和SRAM比较 DRAM刷新 DRAM地址复用技术
第五次笔记:SRAM和DRAM 栅极电容 双稳态触发器 DRAM和SRAM比较 DRAM刷新 DRAM地址复用技术
550 0
第五次笔记:SRAM和DRAM 栅极电容 双稳态触发器 DRAM和SRAM比较 DRAM刷新 DRAM地址复用技术
使用内存映射提高BufferedRandoAccessFile性能(测试可用)
使用内存映射提高BufferedRandoAccessFile性能(测试可用)
144 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等