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支持的变量,修改完之后,就可以正常使用了。

相关推荐
hqxstudying18 分钟前
J2EE模式---前端控制器模式
java·前端·设计模式·java-ee·状态模式·代码规范·前端控制器模式
开开心心就好1 小时前
Excel数据合并工具:零门槛快速整理
运维·服务器·前端·智能手机·pdf·bash·excel
im_AMBER2 小时前
Web开发 05
前端·javascript·react.js
Au_ust2 小时前
HTML整理
前端·javascript·html
安心不心安2 小时前
npm全局安装后,依然不是内部或外部命令,也不是可运行的程序或批处理文件
前端·npm·node.js
迷曳4 小时前
28、鸿蒙Harmony Next开发:不依赖UI组件的全局气泡提示 (openPopup)和不依赖UI组件的全局菜单 (openMenu)、Toast
前端·ui·harmonyos·鸿蒙
爱分享的程序员4 小时前
前端面试专栏-工程化:29.微前端架构设计与实践
前端·javascript·面试
上单带刀不带妹4 小时前
Vue3递归组件详解:构建动态树形结构的终极方案
前端·javascript·vue.js·前端框架
-半.4 小时前
Collection接口的详细介绍以及底层原理——包括数据结构红黑树、二叉树等,从0到彻底掌握Collection只需这篇文章
前端·html
90后的晨仔4 小时前
📦 Vue CLI 项目结构超详细注释版解析
前端·vue.js