Introducing PMDK into PostgreSQL

將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的固定大小表文件進行擴展。

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

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