Introducing PMDK into PostgreSQL

將PMDK引入PostgreSQL
持久性內存(PMEM)具備快速、非易失和可字節訪問的特性,可以經過load/store指令被CPU直接訪問。如今已有供應商提供這種產品。相對於HSS或者SSD,數據庫管理系統跑在PMEM上性能更好。藉助PMDK(Persistent Memory Development Kit),將數據庫修改爲適配PMEM的產品,能夠進一步提升其性能。本次演講的話題圍繞如何修改Postgresql使之適配PMEM,以及修改後的效果如何。咱們第一步將圍繞WAL日誌以及表來提高OLTP性能和checkpoint時間。html

有兩種方法使用PMEM。第一種是最簡單的方法,經過直接訪問(DAX,direct-access)文件系統,即跳過操做系統的頁緩存,直接訪問磁盤。這種方法不用修改PG。另外一種方法:PMDK包含適配PMEM的lib庫,能夠繞過內核直接到PMEM映射文件以及跳過CPU緩存進行內存拷貝。這種方法性能更好。sql

使用PMDK修改PG,主要關注WAL和表段文件。咱們使用PMDK提供的PMEM函數替代系統調用函數open、lseek、read、write和fdatasync。而後和跑在DAX文件系統上的原生PG進行性能比較。試驗中,咱們使用飛翼式的DIMM(NVDIMM)做爲PMEM。結果顯示,在WAL方面,在INSERT場景中咱們能夠提高1.8倍的TPS。咱們作出的修改將近1200行。對於表,咱們checkpoint時能夠減小將近20%的時間。數據庫

另外一方面,咱們也在其餘方面進行探索,例如控制NUMA影響、消除SQL解析的開銷、對PMEM-mapped的固定大小表文件進行擴展。緩存

原文地址
https://www.pgcon.org/2018/schedule/events/1154.en.htmlapp

相關文章
相關標籤/搜索