一、TPC-C 简介
TPC 是一系列事务处理和数据库基准测试的规范。其中TPC-C(Transaction Processing Performance Council)是针对 OLTP 的基准测试模型。TPC-C 测试模型给基准测试提供了一种统一的测试标准,可以大体观察出数据库服务稳定性、性能以及系统性能等一系列问题。对数据库展开 TPC-C 基准性能测试,一方面可以衡量数据库的性能,另一方面可以衡量采用不同硬件软件系统的性价比,也是被业内广泛应用并关注的一种测试模型。
TPC-C模型是以一个在线零售业为例,设计的一种模型。具体架构如下所示:
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,并帮助优化其数据库配置和硬件资源。
本次测试结果仅供参考,测试需要结合实际情况,考虑硬件资源配置,以及网络等。
人物A 回复
这是回复
人物B 回复
我回复你了
人物A 回复
回复已收到