AnalyticDB for PostgreSQL TPC-B性能测试

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
简介: 1 前言 AnalyticDB for PostgreSQL 6.0 (简称ADBPG6.0)在事务处理性能上相比上个版本ADBPG4.3有了质的飞跃,本文将以TPC-B业界标准事务性能测试benchmark来展示ADBPG6.0在事务上的处理能力。

1 前言

AnalyticDB for PostgreSQL 6.0 (简称ADBPG6.0)在事务处理性能上相比上个版本ADBPG4.3有了质的飞跃,本文将以TPC-B业界标准事务性能测试benchmark来展示ADBPG6.0在事务上的处理能力。

2 TPC-B简介

TPC-B是由TPC(Transaction Processing Performance Council,事务处理性能委员会)提供的benchmark,主要用于衡量一个系统每秒能够处理的并发事务数。TPC-B不像TPC-C那样模拟了现实生活中一个具体的交易场景,其中的事务都是由简单SQL构成的没有语义的事务(事务中混杂了大表与小表的插入、更新与查询操作),而且每个client的请求间也不会像TPC-C那样会有一个human think time的间隔时间,而是一旦前一个事务执行完成,立马会有下一个事务请求发出。因此,TPC-B经常用于对数据库系统的事务性能压测。

TPC-B性能的衡量指标是每秒处理的事务数量,即TPS(Transactions per Second)。

3 测试环境

3.1 测试数据

使用PostgreSQL提供的开源工具pgbench来生成TPC-B的测试数据,填充因子为100,比例因子为11424。因此,最后TPC-B各个表的数据量如下:

表名 数据量(行数)
pgbench_accounts 1142400000
pgbench_branches 11424
pgbench_history 0
pgbench_tellers 114240

3.2 测试集群

测试的ADBPG6.0集群由16个计算节点,每个计算节点有4个CPU核,32GB内存,存储类型为高性能SSD,具体规格选用参考:https://help.aliyun.com/document_detail/35406.html?spm=a2c4g.11174283.6.548.146c7605Xo9w3A

另外在同一个域里面建了一个ECS(放在与ADBPG实例相同的VPC中),在上面运行pgbench工具来生成TPC-B负载,向ADBPG发送请求。

3.3 集群配置参数

需要获取极致的TP性能,需要对一下参数进行修改。其中有些参数用户无法自行设置,请联系ADBPG值班人员进行修改。

参数 说明
set optimizer = off 关闭ADBPG针对AP场景的orca优化器,对TP性能更友好。
set shared_buffers = 8GB 将ADBPG的数据共享缓存调大。
修改该参数需要重启实例。
set wal_buffers = 256MB 将ADBPG的WAL日志缓存调大。
修改该参数需要重启实例。
set log_statement = none 将日志输出关闭。
set random_page_cost = 10 将随机访问代价开销调小,有利于查询走索引。
set gp_resqueue_priority = off
set resource_scheduler = off 
将ADBPG的resource queue关闭。
需要重启实例

4 测试结果

测试在不同并发度情况下,ADBPG6.0的性能结果,结果如下图所示,其中横坐标代表不同的并发数,纵坐标代表测试性能(单位为TPS,transactions per second)。除了对ADBPG的TPC-B的性能测试之外,还使用pgbench对只读、只更新和只插入进行了测试。从下面的测试性能结果图中可以看出,ADBPG的TPC-B峰值性能可以达到 5923.833804 TPS,只读峰值性能为 150084.180541 TPS, 只更新峰值性能为31023.373105 TPS,只插入的峰值性能为60367.182157TPS。

  • TPC-B性能

image

  • 只读性能

image

  • 只更新性能

image

  • 只插入性能

image

5 如何使用pgbench进行ADBPG的TPC-B测试

5.1 工具下载安装

有两种方式对pgbench工具进行安装:

  1. 源码安装:下载开源数据库PostgreSQL源码,然后到pgbench对应的目录中单独对pgbench进行编译生成可执行的二进制文件。
  2. 二进制安装:可以先直接yum install postgresql-server来安装PostgreSQL程序,此过程会自动安装pgbench工具。

5.2 数据生成加载

执行如下命令,会自动将数据生成加载到ADBPG实例中

# 其中-F参数就是上文说的装填因子,-s值得是比例因子
./pgbench -i -F 100 -s 11424 -p port -h con_addr -U user_name db_name

5.3 执行测试

  • 执行TPC-B负载
# -c指定了连接数据库client数量,-j指定了建立连接使用的线程数量,推荐将两者设置成一样
# -T指定了测试执行时间,单位为秒
./pgbench -h con_addr -p port -r -n -c 96 -j 96 -T 120 -f all.sql -U user_name db_name

其中all.sql为TPC-B负载,其内容如下:

\set scale 11424
\set nbranches 1 * :scale
\set ntellers 10 * :scale
\set naccounts 100000 * :scale
\setrandom aid 1 :naccounts
\setrandom bid 1 :nbranches
\setrandom tid 1 :ntellers
\setrandom delta -5000 5000

BEGIN;
 UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
 SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
 UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
 UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
 INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
END;
  • 执行只读负载
# -c指定了连接数据库client数量,-j指定了建立连接使用的线程数量,推荐将两者设置成一样
# -T指定了测试执行时间,单位为秒
./pgbench -h con_addr -p port -r -n -c 96 -j 96 -T 120 -f select.sql -U user_name db_name

其中select.sql为只读负载,其内容如下:

\set scale 11424
--\set scale 1
\set naccounts 100000 * :scale
\setrandom aid 1 :naccounts

SELECT abalance FROM pgbench_accounts WHERE aid = :aid;

  

  • 执行只更新负载
# -c指定了连接数据库client数量,-j指定了建立连接使用的线程数量,推荐将两者设置成一样
# -T指定了测试执行时间,单位为秒
./pgbench -h con_addr -p port -r -n -c 96 -j 96 -T 120 -f update.sql -U user_name db_name

其中update.sql为只更新负载,其内容如下:

\set scale 11424
\set naccounts 100000 * :scale
\setrandom aid 1 :naccounts
\setrandom delta -5000 5000

UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
  • 执行只插入负载
# -c指定了连接数据库client数量,-j指定了建立连接使用的线程数量,推荐将两者设置成一样
# -T指定了测试执行时间,单位为秒
./pgbench -h con_addr -p port -r -n -c 96 -j 96 -T 120 -f insert.sql -U user_name db_name

其中insert.sql为只插入负载,其内容如下:

\set scale 11424
\set nbranches 1 * :scale
\set ntellers 10 * :scale
\set naccounts 100000 * :scale
\setrandom aid 1 :naccounts
\setrandom bid 1 :nbranches
\setrandom tid 1 :ntellers
\setrandom delta -5000 5000

INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4月前
|
SQL 运维 关系型数据库
基于AnalyticDB PostgreSQL的实时物化视图研发实践
AnalyticDB PostgreSQL企业数据智能平台是构建数据智能的全流程平台,提供可视化实时任务开发 + 实时数据洞察,让您轻松平移离线任务,使用SQL和简单配置即可完成整个实时数仓的搭建。
539 1
|
4月前
|
存储 监控 Cloud Native
如何通过持续测试和调整来提高OLAP系统的性能和可扩展性?
【5月更文挑战第14天】如何通过持续测试和调整来提高OLAP系统的性能和可扩展性?
52 2
|
4月前
|
Cloud Native 关系型数据库 OLAP
云原生数据仓库产品使用合集之阿里云云原生数据仓库AnalyticDB PostgreSQL版的重分布时间主要取决的是什么
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
4月前
|
运维 Cloud Native 关系型数据库
云原生数据仓库产品使用合集之原生数据仓库AnalyticDB PostgreSQL版如果是列存表的话, adb支持通过根据某个字段做upsert吗
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
3月前
|
运维 Cloud Native 关系型数据库
云原生数据仓库AnalyticDB产品使用合集之PostgreSQL版是否直接支持实时物化视图
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
118 3
|
4月前
|
SQL 关系型数据库 OLAP
PostgreSQL从小白到高手教程 - 第46讲:poc-tpch测试
PostgreSQL从小白到高手教程 - 第46讲:poc-tpch测试
136 3
|
4月前
|
关系型数据库 OLAP OLTP
PostgreSQL从小白到高手教程 - 第45讲:poc-tpcc测试
CUUG PostgreSQL技术大讲堂系列公开课第45讲-POC-TPCC测试的内容,往期视频及文档,请联系CUUG。
125 1
|
4月前
|
SQL 运维 关系型数据库
基于AnalyticDB PostgreSQL的实时物化视图研发实践
AnalyticDB PostgreSQL版提供了实时物化视图功能,相较于普通(非实时)物化视图,实时物化视图无需手动调用刷新命令,即可实现数据更新时自动同步刷新物化视图。当基表发生变化时,构建在基表上的实时物化视图将会自动更新。AnalyticDB PostgreSQL企业数据智能平台是构建数据智能的全流程平台,提供可视化实时任务开发 + 实时数据洞察,让您轻松平移离线任务,使用SQL和简单配置即可完成整个实时数仓的搭建。
143973 8
|
4月前
|
关系型数据库 OLAP 数据库连接
AnalyticDB PostgreSQL版目前不支持使用外部数据包装器
AnalyticDB PostgreSQL版目前不支持使用外部数据包装器
99 3
|
4月前
|
SQL 关系型数据库 PostgreSQL
PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)
PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)
469 0

相关产品

  • 云数据库 RDS PostgreSQL 版