【TiDB】10-对 TiDB 进行 TPC-C 测试

目录

1、安装bench工具

2、插入数据

3、运行测试

4、测试结果分析

4.1、总体性能概览

4.2、事务类型详细性能

4.3、错误事务分析

4.4、结论与建议

5、清理测试数据


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 为准,即最终衡量单位为每分钟处理的新订单数。

1、安装bench工具

tiup install bench

错误如下:

The component `bench` not found (may be deleted from repository); skipped

由于在前面章节,采用离线方式部署tiup及tidb,不知道是否是这个原因导致无法安装

将tidb-community-toolkit-v8.1.0-linux-amd64 工具包中的 bench-v1.12.0-linux-amd64.tar.gz

复制到另一个位置后解压,然后配置环境变量。

在前面章节中,我的环境配置文件在 /home/tidb/.bashrc 中,

cd /home/tidb
mkdir bench
cd bench
tar -zxf bench-v1.12.0-linux-amd64.tar.gz

# 依据个人实际的环境变量位置 ,在线的方式 可能是 /root/.bashrc
vim /home/tidb/.bashrc

结尾处添加配置

export PATH=/home/tidb/bench:$PATH

然后执行

source /homt/tidb/.bashrc

2、插入数据

如果部署多个tidb-server服务,且端口都为4000,则命令中的IP可以用逗号隔开。

如 192.168.20.113, 192.168.20.114

cd /home/tidb/benchtiup-bench tpcc -H 192.168.20.113 -P 4000 -U root -p 123456  -D tpcc --warehouses 100 --threads 20 prepare

其中参数:

--warehouses 100 表示执行100个批次,一个批次数据以文章最开始的表格数据

--threads 20  开启20 线程同时操作。

-D tpcc  数据库实例名

最终数据结果

数据导入完成后,可以通过命令 验证数据正确性。

tiup bench tpcc -H 192.168.20.113 -P 4000 -D tpcc --warehouses 4 check

3、运行测试

tiup-bench tpcc -H 192.168.20.113 -P 4000 -U root -p 123456 -D tpcc --warehouses 100 --threads 100 --time 10m run

运行过程中控制台上会持续打印测试结果:

[Current] DELIVERY - Takes(s): 10.0, Count: 116, TPM: 698.9, Sum(ms): 37024.4, Avg(ms): 319.1, 50th(ms): 302.0, 90th(ms): 436.2, 95th(ms): 570.4, 99th(ms): 939.5, 99.9th(ms): 939.5, Max(ms): 939.5
[Current] NEW_ORDER - Takes(s): 10.0, Count: 1386, TPM: 8318.0, Sum(ms): 410842.4, Avg(ms): 296.3, 50th(ms): 251.7, 90th(ms): 486.5, 95th(ms): 637.5, 99th(ms): 906.0, 99.9th(ms): 1342.2, Max(ms): 1342.2
[Current] ORDER_STATUS - Takes(s): 10.0, Count: 126, TPM: 757.6, Sum(ms): 869.9, Avg(ms): 6.9, 50th(ms): 6.8, 90th(ms): 8.9, 95th(ms): 10.5, 99th(ms): 14.7, 99.9th(ms): 16.3, Max(ms): 16.3
[Current] PAYMENT - Takes(s): 10.0, Count: 1327, TPM: 7963.8, Sum(ms): 546047.8, Avg(ms): 411.6, 50th(ms): 352.3, 90th(ms): 704.6, 95th(ms): 872.4, 99th(ms): 1275.1, 99.9th(ms): 1543.5, Max(ms): 1610.6
[Current] STOCK_LEVEL - Takes(s): 10.0, Count: 137, TPM: 823.2, Sum(ms): 3402.9, Avg(ms): 24.9, 50th(ms): 10.0, 90th(ms): 15.2, 95th(ms): 130.0, 99th(ms): 243.3, 99.9th(ms): 302.0, Max(ms): 302.0[Current] DELIVERY - Takes(s): 10.0, Count: 123, TPM: 740.3, Sum(ms): 35960.9, Avg(ms): 292.4, 50th(ms): 251.7, 90th(ms): 453.0, 95th(ms): 604.0, 99th(ms): 973.1, 99.9th(ms): 1040.2, Max(ms): 1040.2
[Current] NEW_ORDER - Takes(s): 10.0, Count: 1242, TPM: 7474.8, Sum(ms): 388801.1, Avg(ms): 313.2, 50th(ms): 260.0, 90th(ms): 536.9, 95th(ms): 704.6, 99th(ms): 1208.0, 99.9th(ms): 1610.6, Max(ms): 1610.6
[Current] ORDER_STATUS - Takes(s): 10.0, Count: 106, TPM: 638.4, Sum(ms): 766.2, Avg(ms): 7.2, 50th(ms): 6.8, 90th(ms): 9.4, 95th(ms): 14.7, 99th(ms): 18.9, 99.9th(ms): 21.0, Max(ms): 21.0
[Current] PAYMENT - Takes(s): 10.0, Count: 1243, TPM: 7472.7, Sum(ms): 571087.3, Avg(ms): 459.4, 50th(ms): 385.9, 90th(ms): 805.3, 95th(ms): 1040.2, 99th(ms): 1677.7, 99.9th(ms): 2415.9, Max(ms): 2818.6
[Current] STOCK_LEVEL - Takes(s): 9.9, Count: 111, TPM: 673.1, Sum(ms): 3125.7, Avg(ms): 28.1, 50th(ms): 11.0, 90th(ms): 65.0, 95th(ms): 113.2, 99th(ms): 285.2, 99.9th(ms): 570.4, Max(ms): 570.4

最终测试报告

Finished
[Summary] DELIVERY - Takes(s): 599.7, Count: 6732, TPM: 673.5, Sum(ms): 2229639.0, Avg(ms): 331.4, 50th(ms): 302.0, 90th(ms): 503.3, 95th(ms): 637.5, 99th(ms): 939.5, 99.9th(ms): 1677.7, Max(ms): 2013.3
[Summary] NEW_ORDER - Takes(s): 599.9, Count: 74459, TPM: 7447.3, Sum(ms): 24556150.5, Avg(ms): 329.9, 50th(ms): 285.2, 90th(ms): 570.4, 95th(ms): 771.8, 99th(ms): 1275.1, 99.9th(ms): 2415.9, Max(ms): 4160.7
[Summary] NEW_ORDER_ERR - Takes(s): 599.9, Count: 23, TPM: 2.3, Sum(ms): 3316.2, Avg(ms): 144.5, 50th(ms): 151.0, 90th(ms): 251.7, 95th(ms): 704.6, 99th(ms): 872.4, 99.9th(ms): 872.4, Max(ms): 872.4
[Summary] ORDER_STATUS - Takes(s): 600.0, Count: 6703, TPM: 670.3, Sum(ms): 53463.5, Avg(ms): 8.0, 50th(ms): 7.3, 90th(ms): 10.0, 95th(ms): 13.1, 99th(ms): 18.9, 99.9th(ms): 159.4, Max(ms): 520.1
[Summary] PAYMENT - Takes(s): 599.9, Count: 71659, TPM: 7167.0, Sum(ms): 32908219.3, Avg(ms): 459.5, 50th(ms): 369.1, 90th(ms): 872.4, 95th(ms): 1140.9, 99th(ms): 1879.0, 99.9th(ms): 3221.2, Max(ms): 6174.0
[Summary] PAYMENT_ERR - Takes(s): 599.9, Count: 42, TPM: 4.2, Sum(ms): 10898.3, Avg(ms): 259.2, 50th(ms): 251.7, 90th(ms): 570.4, 95th(ms): 570.4, 99th(ms): 771.8, 99.9th(ms): 771.8, Max(ms): 771.8
[Summary] STOCK_LEVEL - Takes(s): 600.0, Count: 6630, TPM: 663.0, Sum(ms): 203118.1, Avg(ms): 30.7, 50th(ms): 11.5, 90th(ms): 79.7, 95th(ms): 167.8, 99th(ms): 335.5, 99.9th(ms): 604.0, Max(ms): 1409.3
[Summary] STOCK_LEVEL_ERR - Takes(s): 600.0, Count: 2, TPM: 0.2, Sum(ms): 22.2, Avg(ms): 11.3, 50th(ms): 10.0, 90th(ms): 13.1, 95th(ms): 13.1, 99th(ms): 13.1, 99.9th(ms): 13.1, Max(ms): 13.1
tpmC: 7447.3, tpmTotal: 16621.0, efficiency: 579.1%

4、测试结果分析

将测试结果交由AI分析,提示词:

以下是使用TPC-C 对TiDB服务进行压力测试结果,请分析测试结果

以下是基于提供的TPC-C压力测试结果的分析:

4.1、总体性能概览

  • tpmC (New Order 事务每分钟处理次数): 7447.3
    • 这是TPC-C测试中最重要的指标,代表每分钟成功处理的New Order事务数。7447.3 表示系统每分钟处理约7447个New Order事务。
  • tpmTotal: 16621.0
    • 这是系统总体每分钟处理的所有事务(包括其他类型的事务)的总和。
  • 效率 (efficiency): 579.1%
    • 这个值通常表示系统的利用率。超过100%的效率可能表示系统在超负荷运行,或者在一定程度上对事务进行了并发优化。

4.2、事务类型详细性能

  • DELIVERY

    • TPM: 673.5
    • 平均响应时间: 331.4ms
    • 最大响应时间: 2013.3ms
    • P99 响应时间: 939.5ms
    • 分析: DELIVERY事务的平均响应时间和P99响应时间相对较高,表明在高负载下,可能会出现瓶颈或延迟。
  • NEW_ORDER

    • TPM: 7447.3
    • 平均响应时间: 329.9ms
    • 最大响应时间: 4160.7ms
    • P99 响应时间: 1275.1ms
    • 分析: New Order事务是TPC-C测试中的关键负载类型。该事务的平均响应时间相对较好,但P99响应时间较高,可能意味着系统在高负载时有较大延迟。
  • ORDER_STATUS

    • TPM: 670.3
    • 平均响应时间: 8.0ms
    • 最大响应时间: 520.1ms
    • 分析: 这是一个相对较轻的查询操作,响应时间较低。性能表现良好。
  • PAYMENT

    • TPM: 7167.0
    • 平均响应时间: 459.5ms
    • 最大响应时间: 6174.0ms
    • P99 响应时间: 1879.0ms
    • 分析: PAYMENT事务的平均响应时间和P99响应时间较高,最大响应时间超过6秒,显示了在负载下可能存在性能瓶颈。
  • STOCK_LEVEL

    • TPM: 663.0
    • 平均响应时间: 30.7ms
    • 最大响应时间: 1409.3ms
    • 分析: 作为库存查询操作,响应时间总体良好,但在极端情况下(最大响应时间)可能会有明显的延迟。

4.3、错误事务分析

  • NEW_ORDER_ERR: 出现了23次错误,平均响应时间144.5ms,最大872.4ms。
  • PAYMENT_ERR: 出现了42次错误,平均响应时间259.2ms,最大771.8ms。
  • STOCK_LEVEL_ERR: 出现了2次错误,响应时间较低,可能是轻微的错误。
  • 分析: 错误事务数量较少,说明系统在高负载下的稳定性还算不错,但仍需关注事务错误的原因。

4.4、结论与建议

  1. 瓶颈分析: 主要的瓶颈似乎出现在NEW_ORDER和PAYMENT事务中,尤其是在P99和最大响应时间上。可以考虑优化数据库索引、优化SQL查询、或增加硬件资源以改善高负载下的性能。

  2. 事务延迟: 在DELIVERY、NEW_ORDER和PAYMENT事务中的P99和最大响应时间较高,这可能会影响用户体验。建议检查这些事务的执行路径,找出潜在的延迟点。

  3. 系统效率: 效率为579.1%可能表示系统正在过度利用资源,或者在并发负载下有较大的优化空间。建议进一步调查系统资源的利用情况(CPU、内存、磁盘IO等),并根据需求进行调整。

  4. 错误事务: 错误事务数量不多,但需要详细调查这些事务失败的原因,以避免在实际生产环境中出现类似问题。

5、清理测试数据

tiup-bench tpcc -H 192.168.20.113 -P 4000 -U root -p 123456 -D tpcc --warehouses 4 cleanup

DROP TABLE IF EXISTS item
DROP TABLE IF EXISTS customer
DROP TABLE IF EXISTS district
DROP TABLE IF EXISTS history
DROP TABLE IF EXISTS new_order
DROP TABLE IF EXISTS order_line
DROP TABLE IF EXISTS orders
DROP TABLE IF EXISTS stock
DROP TABLE IF EXISTS warehouse
Finished

参照文章:

如何对 TiDB 进行 TPC-C 测试 | PingCAP 文档中心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402319.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据技术—— Clickhouse安装

目录 第一章 ClickHouse入门 1.1 ClickHouse的特点 1.1.1 列式存储 1.1.2 DBMS的功能 1.1.3 多样化引擎 1.1.4 高吞吐写入能力 1.1.5 数据分区与线程级并行 1.1.6 性能对比 第二章 ClickHouse的安装 2.1 准备工作 2.1.1 确定防火墙处于关闭状态 2.1.2 CentOS取消…

论文阅读笔记:ST-MetaNet-1

目录 前言 摘要 CCS 关键词 介绍 时空相关性的复杂组合 空间相关性 时间相关性 时空相关性的多样性 本篇博客结语 前言 读这篇论文边读边学,每天坚持发博客,看到哪学到哪,这系列文章既有翻译,又有深度详细解释&#xff…

2024开源资产管理系统推荐 8款免费开源IT资产管理系统/软件

开源资产管理系统 开源资产管理系统是帮助企业管理、跟踪和优化其资产的强大工具。这些系统能够自动记录资产的详细信息,如采购日期、使用情况、维护记录等,从而实现资产的全生命周期管理。企业可以通过这些系统优化资产使用效率,减少资产闲…

【瑞芯微RV1126(深度学习模型部署)】部署自己训练的yolov8-seg,实现足型检测!

前言 如果按照本系列第一篇博客那样交叉编译了opencv,那本文有些步骤就不用了,比如交叉编译工具链的下载,所以自己斟酌步骤。 本系列第一篇:https://blog.csdn.net/m0_71523511/article/details/139636367 本系列第二篇&#xff…

数字化转型底座-盘古信息IMS OS,可支撑构建MES/WMS/QCS/IoT等工业软件

在当今这个数字化浪潮汹涌的时代,众多企业纷纷踏上数字化转型之路。对于部分想自研工业软件的企业来说,一个强大、灵活且可扩展的数字化底座显得尤为重要。盘古信息IMS OS,,正是这样一款能够支撑构建MES(制造执行系统&…

井字棋游戏(HTML+CSS+JavaScript)

🌏个人博客主页:心.c 前言:这两天在写植物大战僵尸,写不动了,现在和大家分享一下之前我写的一个很简单的小游戏井字棋,这个没有AI,可以两个人一起玩,如果大家觉得我哪里写的有一些问…

BQ27441初始化配置程序,电压、SOC等参数读取程序

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、模拟IIC二、BQ27441初始化配置程序三、学习资料 前言 送给大学毕业后找不到奋斗方向的你(每周不定…

html+css+js网页制作 自定义电商10个页面

htmlcssjs网页制作 自定义电商10个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…

机器学习 第11章-特征选择与稀疏学习

机器学习 第11章-特征选择与稀疏学习 11.1 子集搜索与评价 我们将属性称为“特征”(feature),对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelevant feature)。从给定的特征集合中选择出相关特征子集的过程&a…

UART通信实现与验证(RS485)

前言 UART是一种常用的串行通信协议,RS485则是一种用于长距离和抗干扰的物理层标准。结合UART和RS485可以实现可靠的数据传输,特别是在多点通信和长距离应用中。通过合适的硬件连接、软件配置和验证测试,可以确保这一通信系统的稳定性和数据完…

【刷题笔记】二叉树2

1 二叉树的层序遍历 上一期我们讲了关于二叉树的前序、中序以及后序遍历的相关内容。然而,还存在一种遍历方式,这种方式非常符合我们人类的正常思维,可以求解很多树相关的问题,比较暴力——二叉树的层序遍历。 二叉树的层序遍历与…

读软件开发安全之道:概念、设计与实施01基础

1. 基础 1.1. 实现软件安全既需要运用逻辑,又是一项艺术 1.1.1. 一项仰赖直觉来做出判断的艺术 1.1.2. 需要践行者对当代数字系统有所掌 1.1.3. 需要他们对人与系统之间的交互有所体悟 1.2. 需要准确地思考一下何谓安全 1.2.1. 安全定义的主观性颇强&#xff0…

HarmonyOS开发:跨应用数据共享详解

目录 前言跨应用数据共享的重要性HarmonyOS的数据共享能力相关的基本概念跨应用数据共享的数据管理具体实现跨应用数据共享延伸:数据共享的安全和隐私结语 前言 现在的移动操作系统中,应用之间的数据共享已成为提升用户体验和实现功能互补的重要手段&a…

watch 和 watchEffect 的隐藏点 --- 非常细致

之前有一篇文章讲述了 watch 和 watchEffect 的使用,但在实际使用中,仍然存在一些“隐藏点”,可能会影响开发,在这补充一下。 1. watch 的隐藏点 1.1 性能陷阱:深度监听的影响 当在 watch 中使用 deep: true 来监听…

[MRCTF2020]套娃1

打开题目,查看源代码,有提示 有两层过滤 1.过滤"_"与"%5f" 。 这里要求的参数必须是"b_u_p_t"但是不能检测出"_"。这里看着很作弄人。其实这里要用到php里非法参数名的问题。可以参考一下博客 ?b.u.p.t2333…

Python爬虫技术与K-means算法的计算机类招聘信息获取与数据分析

有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 目录 摘要.... 1 Abstract 2 1 引言.... 3 1.1 研究背景... 3 1.2 国内外研究现状... 4 1.3 研究目的... 5 1.4 研究意义... 7 2 关键技术理论介绍... 7 2.1 Python爬虫... 7 2.1 K-means…

微软开源库 Detours 详细介绍与使用实例分享

目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口,实现对程序异常的拦截 C软件异常排查从入门到精通…

VMware虚拟机下安装Ubuntu22.04以及汉化配置保姆级教程

目录 一.VMware和Ubuntu下载 二.在VMware中创建Ubuntu 1.点击 创建新的虚拟机 2.选择典型 3.选择Ubuntu镜像包(自定义存放的位置) 4.创建个人信息(密码一定要牢记) 5.选择虚拟机的安装位置 6.其他配置项(默认下…

Unity Obfuscator 使用说明

一、Assembly - Settings 1. 核心Unity程序集(Assembly-CSharp) Obfuscate Assembly-CSharp: 开启 这是Unity的核心程序集,所有没有存储在程序集定义文件(assembly definition file)中的代码都会被存储在这里。大多数…

C++多态详解

1. 多态的概念 多态就是函数调用的多种形态,使用多态能够使得不同的对象去完成同一件事时,产生不同的动作和结果。 举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买…