TPC-C 测试报告
背景信息
TPC-C是业界常用的一套Benchmark,由TPC委员会制定发布,用于评测数据库的联机交易处理(偏向OLTP能力)。主要涉及10张表,包含了NewOrder(新订单的生成)、Payment(订单付款)、OrderStatus(最近订单查询)、Delivery(配送)和StockLevel(库存缺货状态分析)等五类业务事务模型。TPC-C使用tpmC值(Transactions per Minute)来衡量系统最大有效吞吐量(MQTh,Max Qualified Throughput),其中Transactions以NewOrder Transaction为准,即最终衡量单位为每分钟处理的新订单数。 本文使用Benchmark-Boot提供的TPC-C验证PolarDB-X的性能表现。
说明 本文的TPC-C的实现基于TPC-C的基准测试,并不能与已发布的TPC-C基准测试结果相比较,本文中的测试并不符合TPC-C基准测试的所有要求。
Benchmark Boot 是为 PolarDB-X 开发的一站式压测平台,目前支持的基准测试包括 Sysbench、TPC-C、TPC-H,通过图形化的方式提升测试效率。
测试设计
测试数据量
基于1000 Warehouse,其中主要的表数据量如下:
- bmsql_order_line 3亿行
- bmsql_stock 1亿行
- bmsql_customer、bmsql_history、bmsql_oorder各3000万行
主机资源
组件名称 | 机型 | 说明 |
---|---|---|
OPS机器 | ecs.g7.4xlarge | 安装部署 |
数据库存储节点 (DN) | ecs.i4.8xlarge * 3 | 32c256g + 7TB的存储 单价:7452元/月 |
PolarDB-X标准版集中式,仅需要部署存储节点DN,不需要额外部署计算节点CN
压力机
组件名称 | 机型 | 说明 |
---|---|---|
压力机 | ecs.hfg7.6xlarge | 24c96g |
测试方法
步骤1:准备压力机
部署Benchmark-Boot,参考文档:使用Benchmark Boot进行压测
# 下载镜像
docker pull polardbx/benchmark-boot:latest
# 启动容器
docker run -itd --name 'benchmark-boot' --privileged --net=host \
-v /etc/localtime:/etc/localtime polardbx/benchmark-boot:latest \
/usr/sbin/init
# 验证
curl http://127.0.0.1:4121/
如果采用离线部署方式,可以采用ops机器下载benchmark-boot镜像后上传到私有仓库
步骤2:准备压测所用 PolarDB-X 实例
创建 PolarDB-X 实例,详细操作步骤请参见:通过 PXD 部署
实例创建参数:
version: v1
type: polardbx
cluster:
name: pxc_test_standard
dn:
image: registry:5000/polardbx-engine-2.0:latest
replica: 1
nodes:
- host_group: [10.0.3.244, 10.0.3.245, 10.0.3.246]
resources:
mem_limit: 80G
验证实例可连接,打开Benchmark-Boot,选择左侧运行压测->数据库连接,将数据库链接信息填入Benchmark-Boot,点击“提交”
步骤3:调整实例参数
通过PXD默认创建的PolarDB-X 实例,采用了内置的my.cnf参数模板,默认采用双1参数:
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
步骤4:压测数据准备
建库
打开Benchmark-Boot, 选择左侧运行压测->TPC-C->切换库,填入库名tpcc,选择MYSQL模式,提交
导入数据
建库完成后,下拉页面到底端,导入TPC-C数据,仓数1000,并发可以填写500,等待数据准备完成
步骤5:执行压测
选择左侧运行压测->TPC-C->运行TPC-C,填入压测参数进行压测
测试结果
场景 | 50 | 100 | 150 | 200 | 250 | 300 |
---|---|---|---|---|---|---|
1000 仓 | 173916.76 | 224736.03 | 241440.77 | 246228.18 | 247217.83 | 249902.01 |
12:11:01,386 [Thread-165] INFO jTPCC : Term-00,
12:11:01,387 [Thread-165] INFO jTPCC : Term-00,
12:11:01,387 [Thread-165] INFO jTPCC : Term-00, Measured tpmC (NewOrders) = 249902.01
12:11:01,387 [Thread-165] INFO jTPCC : Term-00, Measured tpmTOTAL = 554958.7
12:11:01,387 [Thread-165] INFO jTPCC : Term-00, Session Start = 2023-10-30 12:06:01
12:11:01,387 [Thread-165] INFO jTPCC : Term-00, Session End = 2023-10-30 12:11:01
12:11:01,387 [Thread-165] INFO jTPCC : Term-00, Transaction Count = 2775292