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与传统的继
本文详细介绍了PostgreSQL分区插件pg_pathman的工作原理、特性及高效原因,包括其对range和hash分区的支持。通过使用pg_pathman,性能显著提升,特别是在INSERT和查询操作上。此外,还提供了pg_pathman的安装、配置和使用方法,以及性能测试结果,展示其相对于传统分区表的优势。
订阅专栏 解锁全文
56万+

被折叠的 条评论
为什么被折叠?



