postgresql 分区表唯一键_PostgreSQL10分区表性能研究报告

本文是关于PostgreSQL分区表性能的研究报告,作者通过对比pathman、native和inherits三种分区方式,在大量数据场景下进行select和insert操作的测试,分析了不同分区方式对性能和CPU使用率的影响。测试结果显示,在特定并发情况下,pathman分区方式在CPU使用率上表现优于其他方式。
摘要由CSDN通过智能技术生成

作者简介:田磊磊 PostgreSQL、Greenplum高级数据库工程师,熟悉PG技术栈,对OLTP/OLAP均有深入实操经验,目前就职于哈啰出行,维护着国内最大的PG集群之一,超过400个PG实例。微信号:TLL-PostgreSQL-MySQL

ce0933c3c9d6a7949a7311cbc4cfed55.gif

背景

ce0933c3c9d6a7949a7311cbc4cfed55.gif

哈啰出行旗下包括哈啰单车、助力车、顺风车、打车、电动车、换电等几乎所有业务都基于PostgreSQL数据库构建,PostgreSQL的安全、稳定、高效为哈啰出行的上亿用户提供了强大的基础。随着时间的推移,表里的数据量越来越大,有些需要分库分表处理,有些可以通过简单的分区处理即可,表分区有很多好处:

1):只vacuum 最近分区子表而不是vacuum大表,降低io消耗,减少表膨胀。

2):方便维护表,如创建索引耗时更短,通过清理历史分区释放磁盘空间。

3):减少数据扫描等

01

测试目的

1)测试pg_pathman、native、inherit分区表和不分区表的QPS/TPS性能;2)对比:压测索引键+分区键(有索引)查询/插入方式的QPS/TPS、CPU利用率;

02

测试说明

PG实例信息:实例ID:i-bp15xu7930bhkq3urjwm, PG10, 4C8GB。主表下有20个分区表,按月分区,总数据量均为5612.5504万,均匀分布在各分区。查询的对应时间段月分区的的数据量为280万。4个和10个并发压测,压测脚本:
/usr/pgsql-10/bin/pgbench -f select/insert.sql -c 4/10 -j 4/10 -n -P 10 -r -T 300/180 -R 10000 -p 7474 -d postgres -U postgres -h locahost

03

测试CASE

67e2fe96c216d9423e4e55473301ad00.png

04

测试结论

1,在5612.5504万数据量,20个分区情况下select的结论:

1)不分区表相比分区表性能更高,占用cpu更低,qps更高。

2)分区表之间对比,qps相差不多的情况下,pathman分区方式占用cpu更低,10并发下native和inherits占用cpu超过90%以上。

2,在5612.5504万数据量,20个分区情况下insert的结论:

1)不分区表相比分区表性能更高,占用cpu更低,tps较高。

2)分区表之间对比,tps性能相差不多的情况下,pathman分区方式占用cpu更低,native和inherits占用cpu都大于pathman方式。

select记录(取三次执行记录的平均数,每次执行时间5分钟):

41017fa7ac44b1b346ddb6e244189b19.png

insert记录(取二次执行记录的平均数,每次执行时间3分钟):

2d506de290e7243d497065d5ab8473b9.png

05

测试环境硬件配置信息

CPU:

postgres@VECS04164:~$ cat /proc/cpuinfo | grep "model name"model name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHzmodel name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHzmodel name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHzmodel name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz

内存:

postgres@VECS04164:~$ cat /proc/meminfo | grep -i totalMemTotal: 8193156 kBSwapTotal: 0 kBVmallocTotal: 34359738367 kBHugePages_Total: 0

操作系统版本:

postgres@VECS04164:~$ cat /etc/redhat-releaseCentOS release 6.9 (Final)

需要提前安装好pg_pathman插件:

下载地址:https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-6.9-x86_64/

需要两个rpm包:

pg_pathman10-1.4.13-1.rhel6.x86_64.rpmpython-psycopg2-2.7.4-1.rhel6.x86_64.rpm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值