当前位置: fuhua-pet->优技培训 > PolarDB(PostgreSQL版) TPC-C 性能测试

PolarDB(PostgreSQL版) TPC-C 性能测试

2023-06-19作者:fuhua-pet来源:www.fuhua-pet.com

TPC-C 测试

TPC-C 是一种衡量 OLTP 性能的基准测试。TPC-C 混合了五种不同类型和复杂程度的并发交易,这五种并发交易又包括了在线执行以及排队延迟执行。TPC-C 数据库由九种类型的表组成,以每分钟交易量(tmpC)来衡量具体性能。


前期准备

部署 PolarDB-PG

在运行前默认已经通过文档 PolarDB 编译部署:单机文件系统 部署好 PolarDB-PG 的本地实例。


安装 Java 和 Ant

由于 TPC-C 测试工具 benchmarksql 需要通过 Ant 来编译,所以需要安装 Java 和 Ant。这里安装的 Java 版本为 8.0java-install,Ant 版本为 1.9.7ant-install。

::: tip 安装 Java 和 Ant 的后需要修改环境变量。 :::

# 配置环境变量

vim /etc/profile

# 以下是本人机器上的配置,可以参考,路径需要根据自己机器进行调整

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64

JRE_HOME=$JAVA_HOME/jre

CLASSPATH=.:$JRE_HOME/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASSPATH PATH

#ant environment

export ANT_HOME=/home/postgres/apache-ant-1.9.16

export PATH=$PATH:$ANT_HOME/bin

# 生效

source /etc/profile

验证 Java 和 Ant 安装成功。

# java

$ java -version

openjdk version "1.8.0_332"

OpenJDK Runtime Environment (build 1.8.0_332-b09)

OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode)

# ant

$ ant -version

Apache Ant(TM) version 1.9.16 compiled on July 10 2021


安装 benchmarksql

我们将通过 benchmarksql 工具来进行 TPC-C 测试。

::: tip 下面链接中的 benchmarksql 采用的是 5.1 版本。相较于 5.0 版本,5.1 版本可以使用 Procedures,性能表现较好。推荐使用 5.1 版本。 :::

# 下载 benchmarksql

git clone https://github.com/petergeoghegan/benchmarksql

# 编译

cd benchmarksql

ant


进行 TPC-C 测试

TPC-C 测试主要分为四个步骤:载入数据、预热数据、进行测试、结果分析。下面将分别进行说明。

通过如下命令进入到指定目录:

cd run


TPC-C 配置文件

在使用 benchmarksql 运行 TPC-C 测试的时候,需要指定配置参数,配置包括要连接的数据库类型(Oracle、PG)、IP、端口等。如下代码块说明了具体的配置字段名以及含义:

::: tip 后续的载入数据、预热数据、进行测试都可以采用该配置文件,后续该配置文件的名称都为 PolarDB_PG_Run.conf。 :::

# 要连接的数据库类型,下面都以 postgres 为例

db=postgres

# 驱动程序

driver=org.postgresql.Driver

# 连接的 IP 为 localhost, 端口为 5432, 数据库为 tpcc

conn=jdbc:postgresql://localhost:5432/tpcc

# 数据库用户名

user=postgres

# 数据库密码

password=postgres

# 仓库数量,相当于测试数据量

warehouses=10

# 装载数据的进程数量,可根据机器核数动态调整

loadWorkers=20

# 运行测试时的并发客户端数量,一般设置为 CPU 线程总数的 2~6 倍。注意不能超过数据库的最大连接数。 最大连接数可以通过 show max_connections; 查看

terminals=20

# 每个终端运行的事务数,如果该值非 0,则运行总事务数为 runTxnsPerTerminal * terminals。注意,runTxnsPerTerminal 不能和 runMins 同时非 0

runTxnsPerTerminal=0

# 运行时间数,单位为分钟。注意,runTxnsPerTerminal 不能和 runMins 同时非 0

runMins=1

# 每分钟执行的最大事务数,设置为0,则表示不加限制 ( Number of total transactions per minute )

limitTxnsPerMin=0

# 终端和仓库的绑定模式,设置为 true 时说明每个终端有一个固定仓库。 一般采用默认值 true

terminalWarehouseFixed=true

# 是否采用存储过程,为 true 则说明使用

useStoredProcedures=false

该配置的部分中文解释说明参考 benchmarksql 使用指南。


载入数据

脚本 runDatabaseBuild.sh 用来装载数据。在装载数据前,需要通过 psql 命令 create database tpcc 创建 tpcc 数据库。

执行如下 bash 命令,执行装载数据:

./runDatabaseBuild.sh PolarDB_PG_Run.conf

执行成功的结果如下所示:

-- ----

-- Extra commands to run after the tables are created, loaded,

-- indexes built and extra\'s created.

-- PostgreSQL version.

-- ----

vacuum analyze;


预热数据

脚本 runBenchmark.sh 用来执行 TPC-C 测试。通常,在正式压测前会进行一次数据预热。

数据预热的命令如下:

./runBenchmark.sh PolarDB_PG_Run.conf


可能会出现的错误以及解决方法

错误日志:

ERROR jTPCC : Term-00, This session ended with errors!

解决方法:

该错误说明会话断连,需要通过数据库的日志来定位问题,打印数据库的错误日志命令如下:

# 文件名需要替换成目录中带 error 的文件名

cat /home/postgres/tmp_master_dir_polardb_pg_1100_bld/pg_log/postgresql-2022-06-29_101344_error.log


进行测试

数据预热完,就可以进行正式测试。正式测试的命令如下:

./runBenchmark.sh PolarDB_PG_Run.conf


结果分析

压测结束后,结果如下所示:

11:49:15,896 [Thread-9] INFO jTPCC : Term-00, Measured tpmC (NewOrders) = 71449.03

11:49:15,896 [Thread-9] INFO jTPCC : Term-00, Measured tpmTOTAL = 164116.88

11:49:15,896 [Thread-9] INFO jTPCC : Term-00, Session Start = 2022-06-29 11:48:15

11:49:15,896 [Thread-9] INFO jTPCC : Term-00, Session End = 2022-06-29 11:49:15

11:49:15,896 [Thread-9] INFO jTPCC : Term-00, Transaction Count = 164187

Running Average tpmTOTAL / Measured tpmTOTAL:每分钟平均执行事务数(所有事务)

Memory Usage:客户端内存使用情况

Measured tpmC (NewOrders) :每分钟执行的事务数(只统计 NewOrders 事务)

Transaction Count:执行的交易总数量

该结果的部分解释参考 benchmarksql 使用指南。


如何在不同场景下测试

本文档主要提供了 PolarDB-PG 通用的 TPC-C 测试方式,如果需要进行不同场景下的测试,比如:三节点、PFS 文件系统、Ceph 共享存储等。需要通过对应文档创建数据库实例,然后修改数据库的配置。修改配置方式有两个:

可以通过 psql 命令 alter system set ...; 和 select pg_reload_conf(); 来修改配置。

二是修改数据库配置文件来实现修改配置,命令如下:

# 修改配置文件

vim /home/postgres/tmp_master_dir_polardb_pg_1100_bld/postgresql.auto.conf

# 重启数据库

/home/postgres/tmp_basedir_polardb_pg_1100_bld/bin/pg_ctl -D /home/postgres/tmp_master_dir_polardb_pg_1100_bld restart

后续,再根据该文档进行 TPC-C 测试。

  • 大连财经学院 - 国产数据库工作室揭牌仪式圆满成功(CUUG)
  • 河北工程技术学院 - 国产数据库工作室揭牌仪式圆满成功
  • postgresql从小白到高手 - 第38讲:数据库备份
  • 11月18日直播!杭州峰会大咖晚宴煮酒论英雄+PG技术大讲堂(34)
  • 2023年12月,PostgreSQL认证培训红头文件【工信部人才交流中心】
  • 温州大学 - 开源国产数据库工作室成立揭牌仪式圆满结束
  • 1月17日阿里云PolarDB开发者大会PolarDB DevCon
  • 2024-1-12,恭喜CUUG 王同学获得Oracle OCP证书
  • 2024年第13届PostgreSQL中国技术大会来啦!
  • DB-Engines:PostgreSQL is the DBMS of the Year 2023
  • PostgreSQL技术大讲堂 - 第44讲:pg流复制部署
  • PostgreSQL技术大讲堂 - 第45讲:poc-tpcc测试
  • PostgreSQL技术大讲堂 - 第47讲:JMETER工具使用
  • PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived
  • PostgreSQL技术大讲堂 - 第50讲:PG分区表管理
  • 2024-02-02,恭喜CUUG 刘同学通过Oracle考试获得OCP 19c证书
  • OCP认证能不能在家中考试,不去VUE考点考试吗?
  • 恭喜CUUG Guo同学以较高分数通过19c OCM认证考试!
  • 3月30日,工信部人才交流中心PostgreSQL认证考试顺利结束
  • 2024年4月8日,工信人才发布红头文件:PostgreSQL数据库管理人才研修与评测班
  • 恭喜CUUG入选2024年工业和信息化重点领域人才能力评价支撑机构
  • 天津职业技术师范大学《PolarDB开源数据库工作室》授牌仪式顺利完成
  • 温州大学国产开源数据库工作室成功举办PostgreSQL技能培训活动
  • PostgreSQL技术大讲堂 - 第32讲:数据库参数调整
  • PostgreSQL技术大讲堂 - 第34讲:调优工具pgBagder部署
  • PostgreSQL技术大讲堂 - 第31讲:SQL调优技巧
  • PostgreSQL PGCP是什么级别的认证?
  • PGCP中级认证考试的三个维度考核
  • postgresql技术大讲堂 - 第40讲:数据库不完全恢复
  • PostgreSQL技术大讲堂 - 第46讲:poc-tpch测试
  • postgresql从小白到高手 - 第37讲:postgres物理备份和恢复概述
  • postgresql从小白到高手 - 第36讲:postgresql逻辑备份
  • postgresql从小白到高手 - 第35讲:中间件PgBouncer部署
  • PostgreSQL PGCP是什么级别的认证?
  • PGCP中级认证考试的三个维度考核
  • 国内PostgreSQL认证,工信部人才交流中心PG技术能力提升培训认证
  • 11月27日,CUUG新鲜出炉的Oracle DB 19C OCP证书
  • Oracle 19c OCM认证好考吗?CUUG OCM成绩公布
  • Oracle 19c OCM认证考试成绩出炉!- CUUG WDP培训中心
  • 菏泽学院 - 国产数据库工作室揭牌仪式圆满成功
  • PostgreSQL技术大讲堂 - 第41讲:表空间备份与恢复
  • PostgreSQL技术大讲堂 - 第42讲:pg_rman部署与使用
  • PostgreSQL技术大讲堂 - 第43讲:流复制原理
  • 阿里云PolarDB开发者大会圆满结束,CUUG两次获奖
  • 2024年首张Oracle OCP证书-CUUG胡同学
  • 北京培黎职业学院 - PolarDB开源国产数据库工作室成立揭牌 - CUUG
  • PolarDB-X高可用与容灾(WIP)
  • PolarDB-X体系架构architecture
  • 什么是 PolarDB-X 云原生分布式数据库系统
  • postgresql技术大讲堂 - 第39讲:数据库完全恢复