Introducing PMDK into PostgreSQL
2019-05-26 20:04
1141 查看
将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的固定大小表文件进行扩展。
相关文章推荐
- OMNI Introducing Social Structure, Norms and Ontologies into Agent Organizations
- Failed to load sql modules into the database cluster during PostgreSQL Installation
- postgreSQL中insert into select 和select into from复制表
- POSTGRESQL 存储过程 select into 和 insert into select 两种表复制语句之间的差别
- PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句
- PostgreSQL simple select(group by and insert into ...select)
- How to import OpenStreetMap data into PostgreSQL
- Portable PostgreSQL
- insert into tbl() select * from tb2中加入多个条件
- Windows下PostgreSQL 8.2.14、8.4 解压包的安装
- SQLite指南(5) - PRAGMA命令用法(完整) 博客分类: DB2|PostgreSQL|SQLite|OthersDatabase GeneralSYBASE [ASA|IQ|SUP|.
- 从头开始创建django项目和链接postgreSQL
- PostgreSQL实战之启动恢复读取checkpoint记录失败的条件详解
- Sharing Calendars into Outlook
- A single Microsoft Windows process that has the CLR loaded into it
- mysql sqlite3 postgresql 简明操作
- postgresql安装,java简单使用postgresql
- Oracle向PostgreSQL移植实例
- Debian/Ubuntu 下修改postgresql默认密码
- Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification