ssb-tools压测工具使用

一、工具介绍

安装包

doris的压测工具 ssb-tools

安装样例

ruby 复制代码
172.25.152.24:/data/ssbtools/yaochi_performance_tool/ssb-tools/bin

# 路径下的
-rwxr-xr-x 1  501 ftp   1877 Dec 21  2023 build-ssb-dbgen.sh
-rwxr-xr-x 1  501 ftp   2535 Dec 21  2023 create-ssb-tables.sh
-rwxr-xr-x 1  501 ftp   3203 Dec 21  2023 gen-ssb-data.sh
-rwxr-xr-x 1  501 ftp   7601 Dec 26 14:32 load-ssb-data.sh
-rwxr-xr-x 1  501 ftp   4818 Dec 25 19:41 run-ssb-flat-queries.sh
-rwxr-xr-x 1  501 ftp   5489 Dec 25 19:33 run-ssb-queries.sh
-rw-r--r-- 1 root root   152 Dec 25 18:36 sr-cluster.conf
drwxr-xr-x 2 root root  4096 Dec 26 14:27 ssb-data
drwxrwxr-x 2  516  518  4096 Dec 26 14:27 ssb-dbgen
-rw-r--r-- 1 root root 93265 Mar 14  2022 ssb-dbgen-linux.tar.gz

说明:

ssb-data 生成的测试集

doris的压测

ini 复制代码
# ### 
# doris 环境的ssb工具

# 路径
172.21.240.11:/data/ssbtool/yaochi_performance_tool/ssb-tools/bin

# conf 文件
export FE_HOST='172.21.27.30'
export FE_HTTP_PORT=8030
export FE_QUERY_PORT=9030
export USER='root'
export PASSWORD='Yumchina@2024'
export DB='ssb'

# 创建ssb表
bash create-ssb-tables.sh

# 加载数据
bash load-ssb-data.sh -c 10

# 检查数据导入情况
SELECT COUNT(*) FROM part;
SELECT COUNT(*) FROM customer;
SELECT COUNT(*) FROM supplier;
SELECT COUNT(*) FROM dates;
SELECT COUNT(*) FROM lineorder;
SELECT COUNT(*) FROM lineorder_flat;

# 查看数据库大小
select TABLE_SCHEMA, concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as dataMB from information_schema.TABLES GROUP BY TABLE_SCHEMA;
# 查看所有表的大小
SELECT TABLE_SCHEMA, TABLE_NAME, round((DATA_LENGTH + INDEX_LENGTH)/1024/1024 , 2), TABLE_ROWS
FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'ssb' ORDER BY (DATA_LENGTH + INDEX_LENGTH) desc;


# 
sh run-ssb-queries.sh ssb 

# 
sh run-ssb-flat-queries.sh ssb 

二、安装

解压

复制代码
tar -zxvf yaochi_performance_tool.tar.gz
  1. 切换路径

bash 复制代码
cd ./yaochi_performance_tool/ssb-tools/bin
  1. 安装

shell 复制代码
# 安装
bash build-ssb-dbgen.sh
# 安装成功后,将在./yaochi_performance_tool/ssb-tools/bin/ssb-dbgen/目录下生成dbgen二进制文件。
  1. 配置连接starrocks配置文件doris-cluster.conf

ini 复制代码
# Any of FE host
export FE_HOST='172.25.152.23'
# http_port in fe.conf
export FE_HTTP_PORT=8030
# query_port in fe.conf
export FE_QUERY_PORT=9030
# Doris username
export USER='root'
# Doris password
export PASSWORD=''
# The database where SSB tables located
export DB='ssb'

三、准备测试数据

生成ssb测试集

bash 复制代码
# 生成SSB测试集
cd ./yaochi_performance_tool/ssb-tools/bin
bash gen-ssb-data.sh -s 100 -c 100
# 数据会以.tbl为后缀生成在ssb-data/目录下。
# -s 100表示测试集大小系数为100,-c 100表示并发100个线程生成lineorder表的数据。-c参数也决定了最终lineorder表的文件数量。参数越大,文件数越多,每个文件越小。
# -s 100参数下,生成的数据集文件总大小约60GB。生成时间可能在数分钟到1小时不等。

# 
  1. 创建ssb表

bash 复制代码
# 创建ssb表
bash create-ssb-tables.sh
  1. 加载数据

r 复制代码
# 加载数据
bash load-ssb-data.sh -c 10
  1. 检查数据导入情况

sql 复制代码
# 检查数据导入情况
SELECT COUNT(*) FROM part;
SELECT COUNT(*) FROM customer;
SELECT COUNT(*) FROM supplier;
SELECT COUNT(*) FROM dates;
SELECT COUNT(*) FROM lineorder;
SELECT COUNT(*) FROM lineorder_flat;

四、使用

sql 复制代码
# 
# 查看数据库大小
select TABLE_SCHEMA, concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as dataMB from information_schema.TABLES GROUP BY TABLE_SCHEMA;
# 查看所有表的大小
SELECT TABLE_SCHEMA, TABLE_NAME, round((DATA_LENGTH + INDEX_LENGTH)/1024/1024 , 2), TABLE_ROWS
FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'ssb' ORDER BY (DATA_LENGTH + INDEX_LENGTH) desc;
bash 复制代码
# 
# 
sh run-ssb-queries.sh ssb 

# 
sh run-ssb-flat-queries.sh ssb 

调整并发度

ini 复制代码
# 
Parallelism 表示查询并发度,通过 set parallel_fragment_exec_instance_num=8 设置。


# 其他
Runtime Filter Mode 是 Runtime Filter 的类型,通过 set runtime_filter_type="BLOOM_FILTER" 设置。(Runtime Filter
 (opens new window) 功能对 SSB 测试集效果显著。因为该测试集中,Join 算子右表的数据可以对左表起到很好的过滤作用。你可以尝试通过 set runtime_filter_mode=off 关闭该功能,看看查询延迟的变化。)
 
# 

来源: www.bookstack.cn/read/doris-...

五、注意

执行run-ssb-queries.shrun-ssb-flat-queries.sh 会提示某些变量UNKOWN,需要改成starrocks支持的变量,修改完之后,就可以正常使用了。

相关推荐
Hilaku30 分钟前
我用 Gemini 3 Pro 手搓了一个并发邮件群发神器(附源码)
前端·javascript·github
IT_陈寒30 分钟前
Java性能调优实战:5个被低估却提升30%效率的JVM参数
前端·人工智能·后端
快手技术31 分钟前
AAAI 2026|全面发力!快手斩获 3 篇 Oral,12 篇论文入选!
前端·后端·算法
颜酱33 分钟前
前端算法必备:滑动窗口从入门到很熟练(最长/最短/计数三大类型)
前端·后端·算法
全栈前端老曹41 分钟前
【包管理】npm init 项目名后底层发生了什么的完整逻辑
前端·javascript·npm·node.js·json·包管理·底层原理
HHHHHY1 小时前
mathjs简单实现一个数学计算公式及校验组件
前端·javascript·vue.js
boooooooom1 小时前
Vue3 provide/inject 跨层级通信:最佳实践与避坑指南
前端·vue.js
一颗烂土豆1 小时前
Vue 3 + Three.js 打造轻量级 3D 图表库 —— chart3
前端·vue.js·数据可视化
青莲8431 小时前
Android 动画机制完整详解
android·前端·面试
iReachers1 小时前
HTML打包APK(安卓APP)中下载功能常见问题和详细介绍
前端·javascript·html·html打包apk·网页打包app·下载功能