TIDB 性能测试(TIUP-TPCC)

news/2024/5/19 14:53:39 标签: tidb

    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测试客户端

二、测试方案

  1. 通过单独的测试机器进行性能测试。
  2. 使用tiup工具对TIDB集群进行TPC-C测试。
  3. 通过 tiup工具导入 9 张表,以10 WAREHOUSE为例进行测试,其中:
    1. stock 表中有1,059,392条记录(每个仓库对应 10 万种商品的库存数据)。
    2. district 表中有100条记录(每个仓库为 10 个地区提供服务)。
    3. customer 表中有303,000条记录(每个地区有 3000 个客户)。
    4. item表中有100,000条数据。
    5. order_line表中有3,058,959条数据。
    6. new_order表中有90,140条数据。
    7. history 表中有312,447条记录(每个客户一条交易历史)。
    8. orders 表中有 312,440条记录(每个地区 3000 个订单),并且最后生成的 900 个订单被添加到 new-order 表中,每个订单随机生成 5 ~ 15 order-line 记录。
  4. TPC-C使用 tpmC (Transactions per Minute) 来衡量系统最大有效吞吐量 (MQTh, Max Qualified Throughput),其中 Transactions NewOrder Transaction 为准,即最终衡量单位为每分钟处理的新订单数。
  5. 测试完成之后,销毁测试数据。

三、测试步骤

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. 测试参数说明

  1. TAKES(S): 事务的运行时间范围,输出数据的时间减去开始测试时间。
  2. COUNT:   该段时间内完成的事务数。
  3. TPM: 流量指标(tpmC, transactions per minute, 每分钟处理的交易量。
  4. SUM(MS):  事务的请求总用时(ms)
  5. AVG(MS):  事务的请求平均用时(ms)
  6. 50TH(MS):  50%事务的请求用时(ms)范围。
  7. 90TH (MS):  90%事务的请求用时(ms)范围。
  8. 95TH (MS):  95%事务的请求用时(ms)范围。
  9. 99TH (MS):  99%事务的请求用时(ms)范围。
  10. 99.9TH (MS): 99.9%事务的请求用时(ms)范围。
  11. MAX(MS):  事务的请求最大用时(ms)
  12. TPMC: 流量指标(tpmC, transactions per minute, C TPC 中的 C 基准程序):每分钟可以处理的 New-Order 交易的数量。
  13. TPMTOTAL: 每分钟可以处理的全部交易的数量。
  14. EFFICIENCY: efficiency = 100 * tpmC / (specWarehouseFactor * Warehouses数量) , specWarehouseFactor 为每个 warehouse 提供的理论最大事务数, 等于12.86

3. TIDB集群监控指标

 3.1 CPU,内存,磁盘等负载

 

 3.2 SQL数量

3.3 数据库时间


http://www.niftyadmin.cn/n/3067.html

相关文章

不常用方法の积累

C 1 范围溢出用 __int128 或者用 double 2 解决科学计数法精度不够的问题加 cout << fixed ; 3 遍历 map 可以用 for(auto [x,y] : mp)注意要在 c 17 / 20 上运行 4、如何查询一个数值类型的最大值和最小值 int max_int numeric_limits<int>::max(); int ma…

2019 CCPC女生赛 Function

Problem Description wls 有 n 个二次函数 Fi(x) aix2 bix ci (1 ≤ i ≤ n). 现在他想在∑ni1xi m 且 x 为正整数的条件下求∑ni1Fi(xi)的最小值。 请求出这个最小值。 Input 第一行两个正整数 n, m。 下面 n 行&#xff0c;每行三个整数 a, b, c 分别代表二次函数的二…

U盘资料损坏 在线调取资料帮大忙

蒋先生是一家公司的技术人员&#xff0c;偶尔会跟销售出差见客户&#xff0c;而见客户常用的资料都保存在U盘中&#xff0c;但在一次见客户时资料损坏&#xff0c;幸好安装了CpolarEverything&#xff0c;及时从办公室电脑上下载了资料&#xff0c;顺利完成对客户的技术讲解。现…

项目管理之变更管理

目录 前言 一、项目变更管理的基本概念 二、项目变更管理原则 三、组织机构 四、变更的流程&#xff08;重点&#xff09; 总结 前言 本文章主要是介绍一下项目管理过程中的变更管理的相关知识点和注意事项。 一、项目变更管理的基本概念 1.概念定义&#xff1a;项目变…

【榜单公布】10·24征文活动结果出炉!

1024征文结果已出&#xff0c;快来看看你上榜了没&#xff1f; 活动官网&#xff1a;https://marketing.csdn.net/p/54ae7333c25d6c766005ee3ae9f63e5e 奖项CSDN ID昵称博文链接总得分一、“如有神助”奖chenlong_cxy2021dragon人生重开模拟器&#xff08;Python实现&#xff0…

【数据结构】单链表实现

文章目录一、链表概念结构及定义二、链表分类三、单链表实现逻辑&#xff08;1&#xff09;创建结构体&#xff08;2&#xff09;具体函数实现及解析&#xff08;*&#xff09;动态申请一个节点&#xff08;*&#xff09;单链表打印&#xff08;*&#xff09;单链表尾插&#x…

图解 Redis 分布式锁,写得太好了!

分布式锁的演进 基本原理 我们可以同时去一个地方“占坑”&#xff0c;如果占到&#xff0c;就执行逻辑。否则就必须等待&#xff0c;直到释放锁。“占坑”可以去redis&#xff0c;可以去数据库&#xff0c;可以去任何大家都能访问的地方。等待可以自旋的方式。 阶段一 publi…

Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 按钮控件Button 除了文本视图之外&#xff0c;按钮Button也是一种基础控件&#xff0c;因为Button是由TextView派生而来&#xff0c;所以文本视图有的方法Button都能使用 1&#xff1a;textAllCaps属性 对于Button来说&a…