TPC-C 测试

棠羽

2023/04/11

15 min

本文将引导您对 PolarDB for PostgreSQL 进行 TPC-C 测试。

背景

TPC 是一系列事务处理和数据库基准测试的规范。其中 TPC-Copen in new window (Transaction Processing Performance Council) 是针对 OLTP 的基准测试模型。TPC-C 测试模型给基准测试提供了一种统一的测试标准,可以大体观察出数据库服务稳定性、性能以及系统性能等一系列问题。对数据库展开 TPC-C 基准性能测试,一方面可以衡量数据库的性能,另一方面可以衡量采用不同硬件软件系统的性价比,是被业内广泛应用并关注的一种测试模型。

测试步骤

部署 PolarDB-PG

参考如下教程部署 PolarDB for PostgreSQL:

安装测试工具 BenchmarkSQL

BenchmarkSQLopen in new window 依赖 Java 运行环境与 Maven 包管理工具,需要预先安装。拉取 BenchmarkSQL 工具源码并进入目录后,通过 mvn 编译工程:

$ git clone https://github.com/pgsql-io/benchmarksql.git
$ cd benchmarksql
$ mvn

编译出的工具位于如下目录中:

$ cd target/run

TPC-C 配置

在编译完毕的工具目录下,将会存在面向不同数据库产品的示例配置:

$ ls | grep sample
sample.firebird.properties
sample.mariadb.properties
sample.oracle.properties
sample.postgresql.properties
sample.transact-sql.properties

其中,sample.postgresql.properties 包含 PostgreSQL 系列数据库的模板参数,可以基于这个模板来修改并自定义配置。参考 BenchmarkSQL 工具的 文档open in new window 可以查看关于配置项的详细描述。

配置项包含的配置类型有:

  • JDBC 驱动及连接信息:需要自行配置 PostgreSQL 数据库运行的连接串、用户名、密码等
  • 测试规模参数
  • 测试时间参数
  • 吞吐量参数
  • 事务类型参数

导入数据

使用 runDatabaseBuild.sh 脚本,以配置文件作为参数,产生和导入测试数据:

./runDatabaseBuild.sh sample.postgresql.properties

预热数据

通常,在正式测试前会进行一次数据预热:

./runBenchmark.sh sample.postgresql.properties

正式测试

预热完毕后,再次运行同样的命令进行正式测试:

./runBenchmark.sh sample.postgresql.properties

查看结果

                                          _____ latency (seconds) _____
  TransType              count |   mix % |    mean       max     90th% |    rbk%          errors
+--------------+---------------+---------+---------+---------+---------+---------+---------------+
| NEW_ORDER    |           635 |  44.593 |   0.006 |   0.012 |   0.008 |   1.102 |             0 |
| PAYMENT      |           628 |  44.101 |   0.001 |   0.006 |   0.002 |   0.000 |             0 |
| ORDER_STATUS |            58 |   4.073 |   0.093 |   0.168 |   0.132 |   0.000 |             0 |
| STOCK_LEVEL  |            52 |   3.652 |   0.035 |   0.044 |   0.041 |   0.000 |             0 |
| DELIVERY     |            51 |   3.581 |   0.000 |   0.001 |   0.001 |   0.000 |             0 |
| DELIVERY_BG  |            51 |   0.000 |   0.018 |   0.023 |   0.020 |   0.000 |             0 |
+--------------+---------------+---------+---------+---------+---------+---------+---------------+

Overall NOPM:          635 (98.76% of the theoretical maximum)
Overall TPM:         1,424

另外也有 CSV 形式的结果被保存,从输出日志中可以找到结果存放目录。