如何使用pgbench测试O引擎集群的最大性能 您所在的位置:网站首页 集群性能损耗如何测试 如何使用pgbench测试O引擎集群的最大性能

如何使用pgbench测试O引擎集群的最大性能

2024-06-02 12:58| 来源: 网络整理| 查看: 265

PostgreSQL自带一款轻量级的压力测试工具pgbench。pgbench是一种在PostgreSQL(兼容Oracle)上运行基准测试的简单程序,它可以在并发的数据库会话中重复运行相同的SQL命令。本文介绍如何使用pgbench测试PolarDB PostgreSQL版(兼容Oracle)集群的最大性能。

测试环境所有测试均在华北1(青岛)地域完成,PolarDB集群和ECS实例在同一可用区。ECS的实例规格:ecs.g5.16xlarge(64核 256 GiB)。ECS存储规格:SSD本地盘200 GiB。网络类型:专有网络(VPC),PolarDB集群和ECS实例在同一VPC。操作系统:CentOS 7.6 x64。 PolarDB集群节点数:1个主节点和1个只读节点。说明 CentOS 6不支持PostgreSQL 11。测试指标只读QPS

数据库只读时每秒执行的SQL数(仅包含SELECT)。

读写QPS

数据库读写时每秒执行的SQL数(包含INSERT、SELECT、UPDATE)。

准备工作安装测试工具 执行如下命令在ECS实例中安装PostgreSQL 11。 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y postgresql11修改集群参数 PolarDB集群需要修改的配置参数如下:log_statement = 'none' enable_hashjoin=off enable_mergejoin=off enable_bitmapscan=off说明 目前仅log_statement参数支持在控制台修改。设置集群参数的方式,请参见设置集群参数。

修改配置参数后,重启集群让配置生效。

测试方法通过以下命令配置环境变量: export PGHOST= export PGPORT= export PGDATABASE=postgres export PGUSER= export PGPASSWORD=说明 如何查看PolarDB PostgreSQL版(兼容Oracle)集群的连接地址,请参见查看连接地址和端口。根据目标库大小初始化测试数据,具体命令如下: 初始化数据10亿:/usr/pgsql-11/bin/pgbench -i -s 10000初始化数据5亿:/usr/pgsql-11/bin/pgbench -i -s 5000初始化数据1亿:/usr/pgsql-11/bin/pgbench -i -s 1000创建只读和读写的测试脚本。 创建只读脚本ro.sql: 在命令行执行vim ro.sql命令。按I键进入编辑页面。在编辑页面输入如下内容:\set aid random_gaussian(1, :range, 10.0) SELECT abalance FROM pgbench_accounts WHERE aid = :aid;按Esc键退出编辑,输入:wq进行保存并退出。创建读写脚本rw.sql:在命令行执行vim rw.sql命令。按I键进入编辑页面。在编辑页面输入如下内容:\set aid random_gaussian(1, :range, 10.0) \set bid random(1, 1 * :scale) \set tid random(1, 10 * :scale) \set delta random(-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;按Esc键退出编辑,输入:wq进行保存并退出。在命令行执行如下命令测试: 只读测试:88C 710 GB(polar.o.x8.12xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./ro.sql -c 256 -j 128 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 256 -j 128 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 256 -j 128 -T 120 -D scale=10000 -D range=1000000000 64C 512 GB(polar.o.x8.8xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./ro.sql -c 256 -j 128 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 256 -j 128 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 256 -j 128 -T 120 -D scale=10000 -D range=1000000000 32C 256 GB(polar.o.x8.4xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./ro.sql -c 128 -j 128 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 128 -j 128 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 128 -j 128 -T 120 -D scale=10000 -D range=1000000000 16cC 128 GB(polar.o.x8.2xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./ro.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=1000000000 8C 64 GB(polar.o.x8.xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./ro.sql -c 64 -j 32 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 64 -j 32 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 64 -j 32 -T 120 -D scale=10000 -D range=1000000000 8C 32 GB(polar.o.x4.xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./ro.sql -c 64 -j 32 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 64 -j 32 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 64 -j 32 -T 120 -D scale=10000 -D range=1000000000 4C 16 GB(polar.o.x4.large) 总数据量5亿,热数据5000万 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./ro.sql -c 32 -j 32 -T 120 -D scale=5000 -D range=50000000 总数据量5亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 32 -j 32 -T 120 -D scale=5000 -D range=100000000 2C 4 GB(polar.o.x4.medium) 总数据量1亿,热数据5000万 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./ro.sql -c 16 -j 32 -T 120 -D scale=1000 -D range=50000000 总数据量1亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./ro.sql -c 16 -j 32 -T 120 -D scale=1000 -D range=100000000读写测试:88C 710 GB(polar.o.x8.12xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./rw.sql -c 256 -j 256 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 256 -j 256 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 256 -j 256 -T 120 -D scale=10000 -D range=1000000000 64C 512 GB(polar.o.x8.8xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./rw.sql -c 256 -j 256 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 256 -j 256 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 256 -j 256 -T 120 -D scale=10000 -D range=1000000000 32C 256 GB(polar.o.x8.4xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./rw.sql -c 128 -j 128 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 128 -j 128 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 128 -j 128 -T 120 -D scale=10000 -D range=1000000000 16C 128 GB(polar.o.x8.2xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./rw.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=1000000000 8C 64 GB(polar.o.x8.xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./rw.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 64 -j 64 -T 120 -D scale=10000 -D range=1000000000 8C 32 GB(polar.o.x4.xlarge) 总数据量10亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./rw.sql -c 32 -j 32 -T 120 -D scale=10000 -D range=100000000 总数据量10亿,热数据5亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 32 -j 32 -T 120 -D scale=10000 -D range=500000000 总数据量10亿,热数据10亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 32 -j 32 -T 120 -D scale=10000 -D range=1000000000 4C 16 GB(polar.o.x4.large) 总数据量5亿,热数据5000万 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./rw.sql -c 16 -j 16 -T 120 -D scale=5000 -D range=50000000 总数据量5亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 16 -j 16 -T 120 -D scale=5000 -D range=100000000 2C 8 GB(polar.o.x4.medium) 总数据量1亿,热数据5000万 /usr/pgsql-11/bin/pgbench -M prepared -v -r -P 1 -f ./rw.sql -c 8 -j 8 -T 120 -D scale=1000 -D range=50000000 总数据量1亿,热数据1亿 /usr/pgsql-11/bin/pgbench -M prepared -n -r -P 1 -f ./rw.sql -c 8 -j 8 -T 120 -D scale=1000 -D range=100000000说明 scale:该值乘以10万表示测试数据量。range:表示活跃数据量。-c:表示测试连接数,测试连接数不代表该规格的最大连接数,最大连接数请参考计算节点规格。测试结果规格测试数据量热(活跃)数据量只读QPS读写QPS

polar.o.x8.12xlarge

88核 710 GB

10亿1亿630650.40263746.375亿601262.24247352.7610亿589405.79218788.92

polar.o.x8.8xlarge

64核 512 GB

10亿1亿592064.65227352.235亿554777.11213343.1310亿508404.07203331.35

polar.o.x8.4xlarge

32核 256 GB

10亿1亿522182.92213212.345亿509372.85203322.3410亿489349.72198531.37

polar.o.x8.2xlarge

16核 128 GB

10亿1亿263893.72152863.275亿250221.62129238.2610亿239832.62106212.82

polar.o.x8.xlarge

8核 64 GB

10亿1亿142836.5669725.295亿133931.6955927.6510亿124151.0250786.21

polar.o.x4.xlarge

8核 32 GB

10亿1亿126748.0759738.335亿113432.3248372.2510亿104232.8449763.64

polar.o.x4.large

4核 16 GB

5亿5000万76238.8947388.271亿69892.8343638.85

polar.o.x4.medium

2核 8 GB

1亿5000万28320.7018152.631亿30792.1919111.15说明 规格:PolarDB PostgreSQL版(兼容Oracle)的规格代码。测试数据量:本轮测试数据的记录条数。热(活跃)数据量:本轮测试的查询、更新SQL的记录条数。只读QPS:只读测试的结果,表示每秒请求数。读写QPS:读写测试的结果,表示每秒请求数。2c8g4c16g8c32g8c64g16c128g32c256g64c512g88c710g


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有