非易失性WAL buffer

今天看到PG郵件列表裏有非易失性內存在PG應用的討論,作下記錄,接着學習其補丁,如何將WAL buffer改形成非易失性buffer,以及和以前有和區別。該補丁是也是日本NTT公司提供。html

1、原文
https://www.postgresql.org/message-id/002f01d5d28d$23c01430$6b403c90$@hco.ntt.co.jp_1linux

2、Non-volatile WAL BUFFER
提出了一個概念證實的新特性:「非易失WAL buffer」。經過將非易失內存(PMEM)替代DRAM,不須要將WAL記錄寫入WAL段文件便可將其持久化。減小了WAL拷貝和write事務的時間,從而提高數據庫性能。sql

完成此功能的補丁基於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。windows

PMEM比SSD更快,原生支持做爲塊存儲使用。可是傳統的軟件棧並不能將其紅利充分發揮出來,好比用戶buffers、文件系統和塊層。非易失WAL buffer使PG適配PMEM,即像訪問RAM同樣直接訪問PMEM,得到最大的效益。PG現有WAL buffer機制是針對慢速存儲設備HDD、SSD設計的,因此WAL是適配PMEM從新設計數據庫的重要的一個模塊。app

咱們的靈感來自2016年的PGCon大會提出的「Non--volatile Memory Logging」[3],比我和Yoshimi以前工做[4][5]更具效率。我在今年的PGCon大會上提交了一個議題,評估分析非易失WAL buffer的性能。若是該議題被接收,我將在大會上和你們討論該議題。ide

[1] Persistent Memory (SNIA)post

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

3、補丁
補丁

內容類型

大小

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

相關文章
相關標籤/搜索