PMDK引入PostgreS

  

将PMDK引入PostgreSQL
持久性内存(PMEM)具有快速、非易失和可字节访问的特性,能够通过加载/存储指令被CPU直接访问。现在已有供应商提供这种产品。相对于高速钢或者SSD,数据库管理系统跑在PMEM上性能更好。借助PMDK(持久记忆开发工具包),将数据库修改成适配PMEM的产品,可以进一步提高其性能。本次演讲的话题围绕如何修改PostgreSQL使之适配PMEM,以及修改后的效果如何。我们第一步将围绕细胞膜日志以及表来提升OLTP性能和检查点时间。

  

有两种方法使用PMEM第。一种是最简单的方法,通过直接访问(DAX指数),直接访问)文件系统,即跳过操作系统的页缓存,直接访问磁盘。这种方法不用修改PG。另一种方法:PMDK包含适配PMEM的lib库,可以绕过内核直接到PMEM映射文件以及跳过CPU缓存进行内存拷贝。这种方法性能更好。

  

使用PMDK修改PG,主要关注细胞膜和表段文件。我们使用PMDK提供的PMEM函数替代系统调用函数开放,lseek,读、写和fdatasync。然后和跑在DAX文件系统上的原生PG进行性能比较。试验中,我们使用飞翼式的DIMM (NVDIMM)作为PMEM。结果显示,在细胞膜方面,在插入场景中我们可以提升1.8倍的TPS。我们做出的修改将近1200行。对于表,我们检查站时可以减少将近20%的时间。

  

另一方面,我们也在其他方面进行探索,例如控制NUMA影响,消除SQL解析的开销,对PMEM-mapped的固定大小表文件进行扩展。

  

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

PMDK引入PostgreS