New-Order:客户输入一笔新的订货交易;
Payment: 更新客户账户余额以反映其支付状况;
Delivery: 发货(模拟批处理交易);
Order-Status: 查询客户最近交易的状态;
Stock-Level: 查询仓库库存状况,以便能够及时补货。
一、TIDB集群信息及节点配置
1. TIDB集群信息
类别 | 值 |
集群名称 | tidb-test |
集群版本 | v6.3.0 |
2. TIDB集群节点配置
机器名称 | IP | 部署角色 |
TIDB-VM1 | 192.168.0.126 | pd servers, tidb servers, tikv servers, tiflash servers, monitoring servers, grafana servers, alertmanager servers, cdc servers |
TIDB-VM2 | 192.168.0.127 | pd servers, tidb servers, tikv servers, tiflash servers, cdc servers |
TIDB-VM3 | 192.168.0.128 | pd servers, tidb servers, tikv servers, cdc servers |
3.TIDB集群节点硬件配置
集群每个节点配置均相同,如下表所示:
类别 | 名称 |
OS | CentOS Linux release 7.9.2009 |
CPU | 2vCPUs, Intel Xeon E3-12xx v2 @2.60GHz |
RAM | 6GB |
DISK | 200GB |
4. 测试客户端机器信息
测试机器配置与集群的每个节点的机器硬件配置相同。
机器名称 | IP | 部署角色 |
TIDB-TEST-VM | 10.11.0.126 | TIUP TPC-C测试客户端 |
二、测试方案
- 通过单独的测试机器进行性能测试。
- 使用tiup工具对TIDB集群进行TPC-C测试。
- 通过 tiup工具导入 9 张表,以10 WAREHOUSE为例进行测试,其中:
- stock 表中有1,059,392条记录(每个仓库对应 10 万种商品的库存数据)。
- district 表中有100条记录(每个仓库为 10 个地区提供服务)。
- customer 表中有303,000条记录(每个地区有 3000 个客户)。
- item表中有100,000条数据。
- order_line表中有3,058,959条数据。
- new_order表中有90,140条数据。
- history 表中有312,447条记录(每个客户一条交易历史)。
- orders 表中有 312,440条记录(每个地区 3000 个订单),并且最后生成的 900 个订单被添加到 new-order 表中,每个订单随机生成 5 ~ 15 条 order-line 记录。
- TPC-C使用 tpmC 值 (Transactions per Minute) 来衡量系统最大有效吞吐量 (MQTh, Max Qualified Throughput),其中 Transactions 以 NewOrder Transaction 为准,即最终衡量单位为每分钟处理的新订单数。
- 测试完成之后,销毁测试数据。
三、测试步骤
1. 导入数据
tiup bench tpcc \
-H 192.168.0.127 \
-P 4000 \
-D tpcc \
-p 123123 \
-U root \
-T 16 \
--dropdata \
--warehouses 10 prepare
2. 验证数据正确性
tiup bench tpcc \
-H 192.168.0.127 \
-P 4000 \
-D tpcc \
-p 123123 \
-U root \
--warehouses 10 check
3. 运行测试
tiup bench tpcc \
-H 192.168.0.127 \
-P 4000 \
-D tpcc \
-p 123123 \
-U root \
--count 1000000 \
--isolation 4 \
--parts 3 \
--time 3000s \
--output table \
-T 16 \
--warehouses 10 run
参数说明:
-H, --host strings Database host (default [127.0.0.1])\
-P, --port ints Database port (default [4000])
-D, --db string Database name (default "test")
-p, --password string Database password
-U, --user string Database user (default "root")
-T, --threads int Thread concurrency (default 1)
--count int Total execution count, 0 means infinite
--isolation int Isolation Level 0: Default, 1: ReadUncommitted,
2: ReadCommitted, 3: WriteCommitted,
4: RepeatableRead, 5: Snapshot,
6: Serializable, 7: Linerizable
--parts int Number to partition warehouses (default 1)
--time duration Total execution time (default 2562047h47m16.854775807s)
--output string output style, valid values can be { plain | table | json }
(default "plain")
--warehouses int Number of warehouses (default 10)
4. 测试完成之后,验证数据正确性
tiup bench tpcc \
-H 192.168.0.127 \
-P 4000 \
-D tpcc \
-p 123123 \
-U root \
-T 16 \
--warehouses 10 check
5. 清理测试数据
tiup bench tpcc \
-H 10.11.0.127 \
-P 4000 \
-D tpcc \
-p N1s=pH@-nT6F*A5728 \
-U root \
-T 16 \
--warehouses 10 cleanup
四、测试结果
1. 测试结果如下图所示
Current部分只展示一部分:
2. 测试参数说明
- TAKES(S): 事务的运行时间范围,输出数据的时间减去开始测试时间。
- COUNT: 该段时间内完成的事务数。
- TPM: 流量指标(tpmC, transactions per minute), 每分钟处理的交易量。
- SUM(MS): 事务的请求总用时(ms)。
- AVG(MS): 事务的请求平均用时(ms)。
- 50TH(MS): 50%事务的请求用时(ms)范围。
- 90TH (MS): 90%事务的请求用时(ms)范围。
- 95TH (MS): 95%事务的请求用时(ms)范围。
- 99TH (MS): 99%事务的请求用时(ms)范围。
- 99.9TH (MS): 99.9%事务的请求用时(ms)范围。
- MAX(MS): 事务的请求最大用时(ms)。
- TPMC: 流量指标(tpmC, transactions per minute, C 指 TPC 中的 C 基准程序):每分钟可以处理的 New-Order 交易的数量。
- TPMTOTAL: 每分钟可以处理的全部交易的数量。
- EFFICIENCY: efficiency = 100 * tpmC / (specWarehouseFactor * Warehouses数量) , specWarehouseFactor 为每个 warehouse 提供的理论最大事务数, 等于12.86
3. TIDB集群监控指标
3.1 CPU,内存,磁盘等负载