https://docs.pingcap.com/zh/tidb/stable/tiup-bench

在测试数据库性能时,经常需要对数据库进行压测,为了满足这一需求,TiUP 集成了 bench 组件。TiUP bench 组件提供多种压测的 workloads,命令分别如下:

tiup bench tpcc # 以 TPC-C 作为 workload 压测 tiup bench tpch # 以 TPC-H 作为 workload 压测 tiup bench ch # 以 CH-benCHmark 作为 workload 压测 tiup bench ycsb # 以 YCSB 作为 workload 压测 tiup bench rawsql # 以自定义 SQL 文件作为 workload 压测

其中 tpcctpchchrawsql 支持如下命令行参数。ycsb 使用方法较为不同,它主要通过 properties 文件进行配置,详见 go-ycsb 使用说明

-t, --acThreads int OLAP 并发线程数,仅适用于 CH-benCHmark (默认 1) --conn-params string 数据库连接参数,例如: `--conn-params tidb_isolation_read_engines='tiflash'` 设置 TiDB 通过 TiFlash 进行查询 `--conn-params sslmode=disable` 设置连接 PostgreSQL 不启用加密 --count int 总执行次数,0 表示无限次 -D, --db string 被压测的数据库名 (默认为 "test") -d, --driver string 数据库驱动: mysql, postgres (默认 "mysql") --dropdata 在 prepare 数据之前清除历史数据 -h, --help 输出 bench 命令的帮助信息 -H, --host strings 数据库的主机地址 (默认 ["127.0.0.1"]) --ignore-error 忽略压测时数据库报出的错误 --interval duration 两次报告输出时间的间隔 (默认 10s) --isolation int 隔离级别 0:Default,1:ReadUncommitted, 2:ReadCommitted,3:WriteCommitted,4:RepeatableRead, 5:Snapshot,6:Serializable,7:Linerizable --max-procs int Go Runtime 能够使用的最大系统线程数 --output string 输出格式 plain,table,json (默认为 "plain") -p, --password string 数据库密码 -P, --port ints 数据库端口 (默认 [4000]) --pprof string pprof 地址 --silence 压测过程中不打印错误信息 -S, --statusPort int TiDB 状态端口 (默认 10080) -T, --threads int 压测并发线程数 (默认 16) --time duration 总执行时长 (默认 2562047h47m16.854775807s) -U, --user string 压测时使用的数据库用户 (默认 "root")
  • --host 和 --port 支持以逗号分隔传入多个值,以启用客户端负载均衡。例如,当指定 --host 172.16.4.1,172.16.4.2 --port 4000,4001 时,负载程序将以轮询调度的方式连接到 172.16.4.1:4000, 172.16.4.1:4001, 172.16.4.2:4000, 172.16.4.2:4001 这 4 个实例上。
  • --conn-params 需要符合 query string 格式,不同数据库支持不同参数,如:
    • --conn-params tidb_isolation_read_engines='tiflash' 设置 TiDB 通过 TiFlash 进行查询。
    • --conn-params sslmode=disable 设置连接 PostgreSQL 不启用加密。
  • 当运行 CH-benCHmark 时,可以通过 --ap-host--ap-port--ap-conn-params 来指定独立的 TiDB 实例用于 OLAP 查询。

下文分别介绍如何使用 TiUP 运行 TPC-C, TPC-H 以及 YCSB 测试。

使用 TiUP 运行 TPC-C 测试

TiUP bench 组件支持如下运行 TPC-C 测试的命令和参数:

Available Commands: check 检查数据一致性 cleanup 清除数据 prepare 准备数据 run 开始压测 Flags: --check-all 运行所有的一致性检测 -h, --help 输出 TPC-C 的帮助信息 --partition-type int 分区类型 (默认为 1) 1 代表 HASH 分区类型 2 代表 RANGE 分区类型 3 代表 LIST 分区类型并按 HASH 方式划分 4 代表 LIST 分区类型并按 RANGE 方式划分 --parts int 分区仓库的数量 (默认为 1) --warehouses int 仓库的数量 (默认为 10)

TPC-C 测试步骤

以下为简化后的关键步骤。完整的测试流程可以参考如何对 TiDB 进行 TPC-C 测试

  1. 通过 HASH 使用 4 个分区创建 4 个仓库:

    tiup bench tpcc --warehouses 4 --parts 4 prepare
  2. 运行 TPC-C 测试:

    tiup bench tpcc --warehouses 4 --time 10m run
  3. 检查一致性:

    tiup bench tpcc --warehouses 4 check
  4. 清理数据:

    tiup bench tpcc --warehouses 4 cleanup

当需要测试大数据集时,直接写入数据通常较慢,此时可以使用如下命令生成 CSV 数据集,然后通过 TiDB Lightning 导入数据。

  • 生成 CSV 文件:

    tiup bench tpcc --warehouses 4 prepare --output-dir data --output-type=csv
  • 为指定的表生成 CSV 文件:

    tiup bench tpcc --warehouses 4 prepare --output-dir data --output-type=csv --tables history,orders

使用 TiUP 运行 TPC-H 测试

TiUP bench 组件支持如下运行 TPC-H 测试的命令和参数:

Available Commands: cleanup 清除数据 prepare 准备数据 run 开始压测 Flags: --check 检查输出数据,只有 scale 因子为 1 时有效 -h, --help tpch 的帮助信息 --queries string 所有的查询语句 (默认 "q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q18,q19,q20,q21,q22") --sf int scale 因子

TPC-H 测试步骤

  1. 准备数据:

    tiup bench tpch --sf=1 prepare
  2. 运行 TPC-H 测试,根据是否检查结果执行相应命令:

    • 检查结果:

      tiup bench tpch --count=22 --sf=1 --check=true run
    • 不检查结果:

      tiup bench tpch --count=22 --sf=1 run
  3. 清理数据:

    tiup bench tpch cleanup

使用 TiUP 运行 YCSB 测试

你可以使用 TiUP 对 TiDB 和 TiKV 节点分别进行 YCSB 测试。

测试 TiDB

  1. 准备数据:

    tiup bench ycsb load tidb -p tidb.instances="127.0.0.1:4000" -p recordcount=10000
  2. 运行 YCSB 测试:

    # 默认读写比例为 95:5 tiup bench ycsb run tidb -p tidb.instances="127.0.0.1:4000" -p operationcount=10000

测试 TiKV

  1. 准备数据:

    tiup bench ycsb load tikv -p tikv.pd="127.0.0.1:2379" -p recordcount=10000
  2. 运行 YCSB 测试:

    # 默认读写比例为 95:5 tiup bench ycsb run tikv -p tikv.pd="127.0.0.1:2379" -p operationcount=10000

使用 TiUP 运行 RawSQL 测试

你可以将 OLAP 查询写到 SQL 文件中,通过 tiup bench rawsql 执行测试,步骤如下:

  1. 准备数据和需要执行的查询:

    -- 准备数据 CREATE TABLE t (a int); INSERT INTO t VALUES (1), (2), (3); -- 构造查询,保存为 demo.sql SELECT a, sleep(rand()) FROM t WHERE a < 4*rand();
  2. 运行 RawSQL 测试:

    tiup bench rawsql run --count 60 --query-files demo.sql

[转帖]使用 TiUP bench 组件压测 TiDB的更多相关文章

  1. [软件测试]网站压测工具Webbench源码分析

    一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...

  2. 网站(Web)压测工具Webbench源码分析

    一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...

  3. 压测工具Apache Bench的安装与使用

    压测工具使用指南: Apache Bench 下载64位 压缩 cmd打开bin目录 使用abs.exe [option] http[s]://www.asb.com 来测试 其中option: -n ...

  4. NewLife.Net——网络压测单机1.88亿tps

    NewLife.Net压力测试,峰值4.2Gbps,50万pps,消息大小24字节,消息处理速度1.88亿tps! 共集合20台高配ECS参与测试,主服务器带宽6Gbps.100万pps,16核心64 ...

  5. jmeter系列-如何实现像loadrunner一样,多个并发用户先通过登录初始化,然后做并发的接口性能压测

    自动转开发后,就很少关注性能测试方面的东西,最近在帮朋友做一个性能压测,由于朋友那边的公司比较小,环境比较简单,而且是对http服务进行的压测,所以最终 选用了jmeter来实现这个压测. 如下就是我 ...

  6. JMeter接口压测——ServerAgent监控服务端性能指标

    ServerAgent作为一个服务端性能监控插件,结合JMeter自身插件PerfMon可以实现JMeter压测的图形化实时监控,具有良好的实用性.下面讲解一个应用实例 思路: 1. 插件准备 2.打 ...

  7. 关于springmvc的helloworld的压测报告

    都说hello world 很简单,应该能承受很大的请求压力,那么到底有多大?你知道吗?如果知道,那咱们就不继续了.如果不知道,我们来看一下! 1. 准备工作,快速建立一个基于springmvc的he ...

  8. Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告

    Jemter   压测基础(一) 1.压力测试的基本概念: 1.吞吐率(Requestspersecond) 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请 ...

  9. LoadRunner 压测场景制定以及报告分析

    这里,我们利用 LoadRunner 来制定场景,且以测试 tps 值为导向,主要介绍手工场景 单服务器的业务请求处理能力 tps 值在 10~200 是合理的:如果是访问单接口不走关系型数据库的,访 ...

  10. Apache 的 ab 压测工具快速使用

    ab 是一个 httpd 自带的很好用的压力测试工具,它是 apache bench 命令的缩写.ab 命令会创建多个并发访问线程,模拟多个访问者同时对某一 URL 地址进行访问.可以用来测试 apa ...

随机推荐

  1. Angular 实现分页器组件

    很感谢 angular实现简单的pagination分页组件 - Amor丶Diamond - 博客园 (cnblogs.com) , 我根据这位博主代码做了修改, 增加了跳转和每页行数功能. 先看图 ...

  2. Java中递归的简单应用

    递归是一种非常常见的编程技巧,它可以将一个复杂的问题分解成更小的问题,然后递归地解决这些小问题,最终得到整个问题的解.递归的本质就是函数调用自身. 我们来看一个简单的例子:计算阶乘.阶乘是指将一个数和 ...

  3. Java 将Excel工作簿按工作表拆分为多个文档

    本文介绍在Java代码环境中如何将Excel工作簿按工作表拆分为多个Excel文档,即:把Excel工作簿中的每一个工作表单独保存为一个Excel工作簿文件. 思路及方法:通过将源文档中的每个工作表通 ...

  4. Java 设置PDF文档过期时间(有效期)

    有些文档具有一定时效性,需在规定时间段内才可阅读查看,针对此类文档,需要设置文档的过期日期.时间等.下面以Java示例演示为例如何给PDF文档设置过期时间.需使用PDF类库, Free Spire.P ...

  5. 云图说|每个成功的业务系统都离不开APIG的保驾护航

    摘要:华为云API网关(APIG)是为企业开发者及合作伙伴提供的高性能.高可用.高安全的API托管服务, 帮助企业轻松构建.管理和部署不同规模的API. 本文分享自华为云社区<[云图说]第243 ...

  6. Kubernetes(K8S) 配置管理 Secret 介绍

    Secret 作用:加密数据(base64)存在 etcd 里面,让 Pod 容器以挂载 Volume 方式进行访问 场景:凭证 [root@k8smaster ~]# echo -n 'admin' ...

  7. 解密Prompt系列23.大模型幻觉分类&归因&检测&缓解方案脑图全梳理

    上一章我们主要聊聊RAG场景下的幻觉检测和解决方案,这一章我们单独针对大模型的幻觉问题,从幻觉类型,幻觉来源,幻觉检测,幻觉缓解这四个方向进行整理.这里就不细说任意一种方法了,因为说不完根本说不完,索 ...

  8. 【redis】 redis linux下安装 redis启动方式 redis典型场景 redis通用命令 数据结构和内部编码 redis字符串类型

    目录 上节回顾 今日内容 1 redis介绍 2 redis linux下安装 3 redis启动方式 3.1 最简启动 3.2 动态参数启动 3.3 配置文件启动 3.4 客户端连接命令 4 red ...

  9. Win 下 Redis 设置开机启动

    1,在redis的目录下执行(执行后就作为windows服务了) redis-server.exe --service-install redis.windows.conf 2,安装好后需要手动启动r ...

  10. Educational Codeforces Round 97 (Rated for Div. 2) (A - D题个人题解)

    1437A. Marketing Scheme 题意:最近猫粮店正在打折销售猫粮罐头,在给定客人能买的罐头数量区间内求合适包装大小 思路:说实话,在比赛刚开始没看懂题,最后放弃读题直接研究给出的样例解 ...