PostgreSQL高效分区表实现-pg_pathman

本文详细介绍了PostgreSQL分区插件pg_pathman的工作原理、特性及高效原因,包括其对range和hash分区的支持。通过使用pg_pathman,性能显著提升,特别是在INSERT和查询操作上。此外,还提供了pg_pathman的安装、配置和使用方法,以及性能测试结果,展示其相对于传统分区表的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PG分区在数据应用中十分广泛。

PostgreSQL背景

目前PostgreSQL社区版本的分区表功能比较弱,需要通过继承和触发器或RULE来实现分区表的功能,由于查询和更新涉及约束的检查、插入则涉及触发器或规则重写,导致分区功能性能较差。

商业版本EDB,以及数据仓库Greenplum都有比较好的分区支持。

去年GP开源后,阿里云RDS PostgreSQL的小伙伴将Greenplum的分区表功能port到PostgreSQL 9.4之后,比使用继承和触发器的方式性能提升了近百倍(参考我之前写的文章,传统方法除了粗发去本身的开销,还有SEARCH的开销,分区越多越慢,没有使用binary search),由于需要改动CATALOG,所以一直没有在9.4的版本上线这个功能。

分区表已经成为PostgreSQL用户万众期待的功能之一了。

社区核心成员之一叶涛所在的公司postgrespro,开发了一款分区表功能的插件,不需要动用catalog,可以很方便的增加分区表的功能。

本文将为大家讲解pg_pathman的原理,以及使用方法。

一、pg_pathman 原理

PostgreSQL传统的分区方法,使用约束来区分不同分区存放的数据(配置constraint_exclusion=partition),执行select/delete/update时执行计划根据约束和查询条件排除不需要查询的分区表。

调用COPY或插入数据时使用触发器或规则,将数据插入对应的分区表。

传统的做法,无论是查询还是插入,对性能的影响都较大。

pg_pathman与传统的继

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值