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
Introducing PMDK into PostgreSQL相关推荐
- Introducing DataFrames in Apache Spark for Large Scale Data Science(中英双语)
文章标题 Introducing DataFrames in Apache Spark for Large Scale Data Science 一个用于大规模数据科学的API--DataFrame ...
- SpringBoot 中JPA集成PostgreSql(详细步骤)避坑!
SpringBoot 中JPA集成PostgreSql(详细步骤) 什么是JPA?(Java Persistence API) Spring Data JPA, part of the larger ...
- PostgreSQL数据库头胎——后台一等公民进程StartupDataBase StartupXLOG函数进入Recovery模式
检查我们是否需要强制从 WAL 中恢复. 如果数据库似乎是完全关闭并且我们没有恢复信号文件,则假设不需要恢复(InRecovery = false). /* Check whether we need ...
- Postgresql 日志收集
PG安装完成后默认不会记录日志,必须修改对应的(${PGDATA}/postgresql.conf)配置才可以,这里只介绍常用的日志配置. 1.logging_collector = on/off - ...
- pg数据库开启远程连接_如何运行远程客户端连接postgresql数据库
如何运行远程客户端连接 postgresql 数据库 前提条件是 2 个: 1 , pg_hba.conf 里面配置了运行远程客户机连接 pg_hba.conf 配置后需要重新加载 reload 生效 ...
- Postgresql:删除及查询字段中包含单引号的数据
Postgresql:删除及查询字段中包含单引号的数据 1. 假设pg表t_info的属性att,值为固定的:'test' 2. 假设值为不固定的,'abcde' 参考 1. 假设pg表t_info的 ...
- postgresql Insert插入的几个报错
postgresql Insert插入的几个报错 1. org.postgresql.util.PSQLException: 未设定参数值 2 的内容. 2. postgresql : column ...
- 【Postgresql】触发器某个字段更新时执行,行插入或更新执行
[Postgresql]触发器某个字段更新时执行,行插入或更新执行 1. postgresql触发器 2. 触发器的创建及示例 1) 字段更新时,触发 2) 行插入或更新时,触发 3. 触发器的删除 ...
- PostgreSql、MySql字段值为空时取其他值语句
PostgreSql: COALESCE(expr1,expr2) COALESCE函数是返回参数中的第一个非null的值,它要求参数中至少有一个是非null的,如果参数都是null会报错. sele ...
最新文章
- css如何设置dialog,css-dialog提示
- pat1004. Counting Leaves (30)
- new一个新对象的时候,各属性方法的操行顺序
- 搜索引擎工作的基础流程与原理
- SVG animation 回顾
- 数据结构入门学习笔记-1
- 如何使用Picterra的地理空间平台分析卫星图像
- Nginx快速搭建和基本使用
- c#里有遍历目录及子目录以树的形式展现
- php重定向error,将nginx错误重定向到php
- apache服务器_Apache的简介与配置(上)
- 李彦宏:百度今年全员涨薪,比去年还多;谷歌暂停Chrome浏览器更新;Eclipse 4.15发布 | 极客头条...
- 【SDCC 2016】微影时代、普元、亚信、Fit2Cloud、VMware、京东商城、优维科技畅聊自动化运维与容器...
- med4way:中介效应和交互效应分析
- 关于项目一直updating indexes不停的解决方案
- ORA-28001: the password has expired解决
- App上架时,华为应用市场提示:在测试环境:Wi-Fi联网、EMUI11.0 ( P40),软件存在闪退。如何模拟EMUI11.0 ( P40)
- 面试到了“IT大佬”,怼得我哑口无言…
- URL 参数编解码详解
- 吉林大学计算机a类学科,尴尬了!这7所高校明明是985,却一个A+学科都没有!...