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

相关推荐
加班是不可能的,除非双倍日工资2 小时前
css预编译器实现星空背景图
前端·css·vue3
wyiyiyi2 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
gnip3 小时前
vite和webpack打包结构控制
前端·javascript
excel3 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
阿华的代码王国3 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼3 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy3 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
ZXT4 小时前
promise & async await总结
前端
Jerry说前后端4 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
画个太阳作晴天4 小时前
A12预装app
linux·服务器·前端