AnalyticDB for PostgreSQL TPC-B性能测试

简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
SQL 运维 关系型数据库
基于AnalyticDB PostgreSQL的实时物化视图研发实践
AnalyticDB PostgreSQL企业数据智能平台是构建数据智能的全流程平台,提供可视化实时任务开发 + 实时数据洞察,让您轻松平移离线任务,使用SQL和简单配置即可完成整个实时数仓的搭建。
364 1
|
29天前
|
关系型数据库 MySQL OLAP
PolarDB +AnalyticDB Zero-ETL :免费同步数据到ADB,享受数据流通新体验
Zero-ETL是阿里云瑶池数据库提供的服务,旨在简化传统ETL流程的复杂性和成本,提高数据实时性。降低数据同步成本,允许用户快速在AnalyticDB中对PolarDB数据进行分析,降低了30%的数据接入成本,提升了60%的建仓效率。 Zero-ETL特性包括免费的PolarDB MySQL联邦分析和PolarDB-X元数据自动同步,提供一体化的事务处理和数据分析,并能整合多个数据源。用户只需简单配置即可实现数据同步和实时分析。
|
1月前
|
SQL 关系型数据库 OLAP
PostgreSQL从小白到高手教程 - 第46讲:poc-tpch测试
PostgreSQL从小白到高手教程 - 第46讲:poc-tpch测试
83 3
|
2月前
|
关系型数据库 OLAP OLTP
PostgreSQL从小白到高手教程 - 第45讲:poc-tpcc测试
CUUG PostgreSQL技术大讲堂系列公开课第45讲-POC-TPCC测试的内容,往期视频及文档,请联系CUUG。
45 1
|
4月前
|
关系型数据库 OLAP 数据库连接
AnalyticDB PostgreSQL版目前不支持使用外部数据包装器
AnalyticDB PostgreSQL版目前不支持使用外部数据包装器
85 3
|
4月前
|
SQL 关系型数据库 PostgreSQL
PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)
PostgreSQL【部署 01】离线安装PostgreSQL+PostGIS踩坑及问题解决经验分享(含安装文件PostgreSQL+PostGIS及多个依赖+测试SQL)
112 0
|
4月前
|
SQL 关系型数据库 测试技术
postgresql|数据库|数据库测试工具pgbench之使用
postgresql|数据库|数据库测试工具pgbench之使用
81 0
|
4月前
|
关系型数据库 数据库 PostgreSQL
postgresql | 数据库| 生成2000W条的简单测试表
postgresql | 数据库| 生成2000W条的简单测试表
24 0
|
5月前
|
存储 人工智能 关系型数据库
5倍性能提升,阿里云AnalyticDB PostgreSQL版新一代实时智能引擎重磅发布
2023 云栖大会上,AnalyticDB for PostgreSQL新一代实时智能引擎重磅发布,全自研计算和行列混存引擎较比开源Greenplum有5倍以上性能提升。AnalyticDB for PostgreSQL与通义大模型家族深度集成,推出一站式AIGC解决方案。阿里云新发布的行业模型及“百炼”平台,采用AnalyticDB for PostgreSQL作为内置向量检索引擎,性能较开源增强了2~5倍。大会上来自厦门国际银行、三七互娱等知名企业代表和瑶池数据库团队产品及技术资深专家们结合真实场景实践,深入分享了最新的技术进展和解析。
5倍性能提升,阿里云AnalyticDB PostgreSQL版新一代实时智能引擎重磅发布
|
7月前
|
关系型数据库 MySQL Java
【JMeter】(3)---MySQL压测
【JMeter】(3)---MySQL压测
174 0

相关产品

  • 云数据库 RDS PostgreSQL 版