Halo数据库之TPC-C基准性能测试

一、TPC-C 简介

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

TPC-C模型是以一个在线零售业为例,设计的一种模型。具体架构如下所示:

微信图片_20231016134945.png

TPC-C具有以下特点:

1)多个复杂类型事务并发执行

2)具有在线和离线交易执行模式

3)多个会话终端模拟多用户访问

4)适中的系统运行时间和应用程序运行时间

5)整个操作有大量的磁盘IO读写操作

6)交易的事务具有完整的ACID特性

7)通过主键和二级索引对分布不均匀的数据进行访问

8)整个TPC-C的库是由许多包含不同字段属性和字段宽度的表组成

9)存在较多数据访问和更新之间的资源争夺

通过模拟批发供应商对客户的销售活动,TPC-C并不仅是体现了某个具体业务,而是代表了大部分销售活动,包含:管理、出售、分发产品和服务。

二、BenchmarkSQL

TPC-C 是一个对 OLTP(联机交易处理)系统进行测试的规范,使用一个商品销售模型对 OLTP 系统进行测试,其中包含五类事务:

NewOrder – 新订单的生成

Payment – 订单付款

OrderStatus – 最近订单查询

Delivery – 配送

StockLevel – 库存缺货状态分析

在测试开始前,TPC-C Benchmark 规定了数据库的初始状态,也就是数据库中数据生成的规则,其中 ITEM 表中固定包含 10 万种商品,仓库的数量可进行调整,假设 WAREHOUSE 表中有 W 条记录,那么:

STOCK 表中应有 W * 10 万条记录(每个仓库对应 10 万种商品的库存数据)

DISTRICT 表中应有 W * 10 条记录(每个仓库为 10 个地区提供服务)

CUSTOMER 表中应有 W 10 3000 条记录(每个地区有 3000 个客户)

HISTORY 表中应有 W 10 3000 条记录(每个客户一条交易历史)

ORDER 表中应有 W 10 3000 条记录(每个地区 3000 个订单),并且最后生成的 900 个订单被添加到 NEW-ORDER 表中,每个订单随机生成 5 ~ 15 条 ORDER-LINE 记录。

TPC-C 使用 tpmC 值(Transactions per Minute)来衡量系统最大有效吞吐量(MQTh,Max Qualified Throughput),其中 Transactions 以 NewOrder Transaction 为准,即最终衡量单位为每分钟处理的新订单数。

三、Halo数据库TPC-C测试

测试采用BenchmarkSQL 5.0对数据库进行压力测试、稳定性测试。

本次测试服务器配置信息:
操作系统:银河麒麟
[halo@localhost ~]$ uname -a
Linux localhost.localdomain 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux
CPU信息:
[halo@localhost ~]$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
     64  HUAWEI,Kunpeng 920
内存信息:
[halo@localhost ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:          509Gi       8.0Gi       490Gi       4.0Gi        11Gi       468Gi
Swap:         4.0Gi          0B       4.0Gi
SSD硬盘
[halo@localhost ~]$ cat /sys/block/sda/queue/rotational
0

3.1 调优数据库服务器操作系统内核参数(需根据服务器配置进入调优)

根据不同的数据库调整操作系统内核参数以达到最优效果

3.2 调优数据库基本配置参数

根据不同的机器配置对数据库调整数据库参数以达到最优效果


四、配置benchmarksql-5.0

修改配置benchmarksql-5.0/run/props.halo

conn=jdbc:halo://ipaddress:1921/db_name
warehouses=100   #使用 100 个 warehouse
loadWorkers=30   #导入数据的并发数
terminals=64     #并发数
runMins=10       #压测10分钟

4.1 装载测试数据

./runDatabaseBuild.sh props.halo

4.2 执行压测

nohup ./runBenchmark.sh props.halo &

4.3 记录tpmTotal值

在上一步的输出结果中的最后一行会输出类似以下的tpmTotal值,将其记录在测试结果中

INFO jTPCC : Term-00, Measured TpmTOTAL = 1041906.85

4.4 删除测试数据

[root@localhost run]# ./runDatabaseDestroy.sh props.halo
# ------------------------------------------------------------
# Loading SQL file ./sql.common/tableDrops.sql
# ------------------------------------------------------------
drop table bmsql_config;
drop table bmsql_new_order;
drop table bmsql_order_line;
drop table bmsql_oorder;
drop table bmsql_history;
drop table bmsql_customer;
drop table bmsql_stock;
drop table bmsql_item;
drop table bmsql_district;
drop table bmsql_warehouse;
drop sequence bmsql_hist_id_seq;

TPC-C测试是一种广泛使用的基准测试,可用于评估关系数据库管理系统的性能。通过模拟在线事务处理环境并使用多种事务类型,TPC-C测试可以帮助企业选择最适合其需求的RDBMS,并帮助优化其数据库配置和硬件资源。

本次测试结果仅供参考,测试需要结合实际情况,考虑硬件资源配置,以及网络等。