非易失性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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章