Introducing PMDK into PostgreSQL

yzs87發表於2019-05-26

將PMDK引入PostgreSQL

永續性記憶體(PMEM)具有快速、非易失和可位元組訪問的特性,能夠透過load/store指令被CPU直接訪問。現在已有供應商提供這種產品。相對於HSS或者SSD,資料庫管理系統跑在PMEM上效能更好。藉助PMDK(Persistent Memory Development Kit),將資料庫修改成適配PMEM的產品,可以進一步提高其效能。本次演講的話題圍繞如何修改Postgresql使之適配PMEM,以及修改後的效果如何。我們第一步將圍繞WAL日誌以及表來提升OLTP效能和checkpoint時間。

有兩種方法使用PMEM。第一種是最簡單的方法,透過直接訪問(DAX,direct-access)檔案系統,即跳過作業系統的頁快取,直接訪問磁碟。這種方法不用修改PG。另一種方法:PMDK包含適配PMEM的lib庫,可以繞過核心直接到PMEM對映檔案以及跳過CPU快取進行記憶體複製。這種方法效能更好。

使用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的固定大小表檔案進行擴充套件。

原文地址


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31493717/viewspace-2645657/,如需轉載,請註明出處,否則將追究法律責任。

相關文章