通过编译TPC-DS生成测试数据并发送到benchmark进行查询测试
第一部分:编译TPC-DS生成测试数据
1、环境准备
(1)首先通过官网下载TPC-DS
下载地址:(http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp)
(2)将下载的文件放到/usr/local/src目录底下
unzip 9b0e0c62-e2be-4183-9a51-de7de896b71d-tpc-ds-tool.zip
cd /usr/local/src/v2.11.0rc2
安装TPC-DS编译环境
yum -y install gcc gcc-c++ expect
2、编译TPC-DS
1、进入解压好的TPC-DS中tools目录底下
cd /usr/local/src/v2.11.0rc2/tools
执行以下语句:
make
编译完成
3、生成测试数据
在tools⽬录是通过dsdgen命令⽣成指定量级的测试数据,可以通过并⾏的⽅式⽣成数据,可以指定数据的分隔符等,具体参数可以使⽤dsdgen –h来查看。
(1)生成测试数据
创建一个目录
mkdir /root/tpcdsdata
cd /usr/local/src/v2.11.0rc2/tools
执行dsdgen命令来生成测试数据
./dsdgen -SCALE 1GB -DIR /root/tpcdsdata (指定了1GB)
SCALE:指定⽣成数据量⼤⼩如:100GB、200GB、1TB、100TB
(2)查看生成的表数据
ll /root/tpcdsdata
cd /root/tpcdsdata
du -sh
并行方式生成测试数据(并行产生1GB测试数据)
./dsdgen -SCALE 1GB -DIR /root/tpcdsdata -parallel 4 -child 4
4、根据模板生成查询语句
通过使用dsqgen命令根据TPC-DS提供的模板生成不同类型的SQL语句,TPC-DS默认支持以下模板:db2.tpl、netezza.tpl、oracle.tpl、sqlserver.tpl,如下使用方式:
使⽤click house来作为⽰例来⽣成CK的查询语句:
vim update_query.sh
#!/bin/bash
COUNTER=1
while [ $COUNTER -lt 100 ]
do
echo $COUNTER
echo "define _END = \"\";">>query$COUNTER.tpl
COUNTER=`expr $COUNTER + 1`
done
将update_query.sh复制到query_template⽬录下,并执⾏脚本./update_query.sh
cd /usr/local/src/v2.11.0rc2/tools
mkdir ../sql
vim gen_query.sh
for i in `seq 1 99`
do
./dsqgen -DIRECTORY ../query_templates/ -TEMPLATE "query${i}.tpl" -DIALECT netezza -FILTER Y > ../sql/query${i}.sql
done
./gen_query.sh
5、将数据导入clickhouse
(1)在/root/tpcdsdata⽬录下创建⽬录handled
(2)在/root/tpcddata⽬录下执⾏如下命令:
for i in `ls *.dat`doname="handled/$i"echo $name`touch $name``chmod 777 $name`sed 's/|$//' $i >> $name;done
(3)将数据加载到表中
导入表结构:
clickhouse-client -h 127.0.0.1 --password=password -u default --port 9000 -mn < /usr/local/src/v2.11.0rc2/tools/tpcds.sql
导入数据:
cd /usr/local/src/v2.11.0rc2/bin
./load-data.sh
vim load-data.sh
for file_name in `ls /home/tpcdsdata/handled/*.dat`;
do table_file=$(echo "${file_name##*/}") table_name=$(echo "${table_file%.*}" | tr '[:upper:]' '[:lower:]') upload_data_sql="INSERT INTO $table_name FORMAT CSV" echo "$upload_data_sql <-- $(du -h $file_name)" cat $file_name | clickhouse-client --password=password --format_csv_delimiter="|" -- max_partitions_per_insert_block=100 --database="tpcd rm $file_name
sleep 2
done
(4)批量压测select语句
cd /usr/local/src/v2.11.0rc2/bin
vim tpc-ds-benchmark-olap.sh
#!/bin/bash
#exec 3>&1 4>&2 1>> tpc-ds-benchmark-olap-`date +'%Y%m%d%H%M%S'`.log 2>&1
N=1
T=100
while [ $N -lt $T ]
doif [ $N -lt 10 ] ; then NN='0'$N
elseNN=$N
fi
echo "query $NN starting"
time clickhouse-client -u default --password=password -d tpcds -mn < /usr/local/src/v2.11.0rc2/queries/query_$NN.sql
echo "query $NN ended!"
N=`expr $N + 1`
sleep 1
done
将queries⽂件夹放⼊cd /usr/local/src/v2.11.0rc2/下,执⾏压测脚本进⾏压测即可。
./tpc-ds-benchmark-olap.sh
第二部分:benchmark进行查询测试
首先将生成的数据导入到clickhouse-benchmark中
clickhouse-client -u user_name --password=passeord -h 127.0.0.1 --port 9000 -d database --multiquery < /usr/local/src/v2.11.0rc2/tools/tpcds.sql
然后进行查询
echo "select * from system.numbers limit 500"| clickhouse-benchmark -i 10
在结果报告中,可以找到:
查询数量:参见
Queries executed:
字段。状态码(按顺序给出):
ClickHouse服务器的连接信息。
已处理的查询数。
QPS:服务端每秒处理的查询数量
RPS:服务器每秒读取多少行
MiB/s:服务器每秒读取多少字节的数据
结果RPS:服务端每秒生成多少行的结果集数据
结果MiB/s.服务端每秒生成多少字节的结果集数据
查询执行时间的百分比。
官网上给出的语法是
$ echo "single query" | clickhouse-benchmark [keys]
或
$ clickhouse-benchmark [keys] <<< "single query"
如果要发送一组查询,请创建一个文本文件,并将每个查询的字符串放在此文件中。 例如:
SELECT * FROM system.numbers LIMIT 10000000
SELECT 1
然后将此文件传递给标准输入 clickhouse-benchmark
.
clickhouse-benchmark [keys] < queries_file
keys参数
-c N
,--concurrency=N
— Number of queries thatclickhouse-benchmark
同时发送。 默认值:1。-d N
,--delay=N
— Interval in seconds between intermediate reports (set 0 to disable reports). Default value: 1.-h WORD
,--host=WORD
— Server host. Default value:localhost
. 为 比较模式 您可以使用多个-h
参数-p N
,--port=N
— Server port. Default value: 9000. For the 比较模式 您可以使用多个-p
钥匙-i N
,--iterations=N
— 查询的总次数. Default value: 0.-r
,--randomize
— 有多个查询时,以随机顺序执行.-s
,--secure
— 使用TLS安全连接.-t N
,--timelimit=N
— Time limit in seconds.clickhouse-benchmark
达到指定的时间限制时停止发送查询。 默认值:0(禁用时间限制)。--confidence=N
— Level of confidence for T-test. Possible values: 0 (80%), 1 (90%), 2 (95%), 3 (98%), 4 (99%), 5 (99.5%). Default value: 5. In the 比较模式clickhouse-benchmark
执行 独立双样本学生的t测试 测试以确定两个分布是否与所选置信水平没有不同。--cumulative
— Printing cumulative data instead of data per interval.--database=DATABASE_NAME
— ClickHouse database name. Default value:default
.--json=FILEPATH
— JSON output. When the key is set,clickhouse-benchmark
将报告输出到指定的JSON文件。--user=USERNAME
— ClickHouse user name. Default value:default
.--password=PSWD
— ClickHouse user password. Default value: empty string.--stacktrace
— Stack traces output. When the key is set,clickhouse-bencmark
输出异常的堆栈跟踪。--stage=WORD
— 查询请求的服务端处理状态. 在特定阶段Clickhouse会停止查询处理,并返回结果给clickhouse-benchmark
。 可能的值:complete
,fetch_columns
,with_mergeable_state
. 默认值:complete
.--help
— Shows the help message.
如果你想在查询时应用上述的部分参数 设置 ,请将它们作为键传递 --<session setting name>= SETTING_VALUE
. 例如, --max_memory_usage=1048576
.
通过编译TPC-DS生成测试数据并发送到benchmark进行查询测试相关推荐
- tpc ds mysql_TPC-DS 数据仓库查询性能测试
最近,需要导入大量的测试数据来评估下某个产品复杂查询SQL性能是否能满足需要,然后,领导大致提了下TPC,找到了TPC-DS工具,创造数据,利用SQL查询模板查询. 一.安装TPC-DS工具 1.下载 ...
- 如何使用TPC-DS生成测试数据并导入MySQL
测试环境 centos7 mysql搭建指南可参考:https://lrting.top/backend/2111/ 安装依赖: yum install gcc make flex bison bya ...
- tpc ds 导入到oracle,用TPC-DS测试Sql server,Oracle
TPC-DS是什么 TPC-DS是TPC组织发布的用于测试决策系统的基准测试,是TPC-H的改进版.我们可以用它生成测试数据集和sql语句来测试数据库的OLAP能力. 最近我们用TPC-DS测试了一下 ...
- 基于GUI的mcc编译和dll生成
基于GUI的mcc编译和dll生成 1.mcc的编译 1.1 MCRInstaller编译器的安装 找到Matlab下的MCRInstaller,双击MCRInstaller编译器,运行安装. 1.2 ...
- 一个C/C++程序从编译到最终生成可执行文件的全过程分析
一个C/C++程序从编译到最终生成可执行文件的全过程分析 C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 1.编译预处理 读取 ...
- C/C++程序从编译到最终生成可执行文件的过程分析
转载http://apps.hi.baidu.com/share/detail/32660500 C/C++程序编译步骤 如何生成可执行文件 ***************************** ...
- Linux下c和cuda混合编译,并生成动态链接库.so和使用
Linux下c和cuda混合编译,并生成动态链接库.so和使用 2016-08-27 14:27 98人阅读 评论(0) 收藏 举报 分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得 ...
- 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?...
[i.MX6UL/i.MX6ULL开发常见问题]2.3单独编译内核,uboot生成很多文件,具体用哪一个? 答:内核编译出来的文件是~/MYiR-imx-Linux/arch/arm/boot/目录下 ...
- 调试与对拍(一):生成测试数据+对拍
今天打比赛时令小编很气愤,隔壁LSH有文件运行错误,重提了一遍老师就收,而小编重提却爱搭不理,于是小编决定还是自己造个数据把代码重测一遍,于是潜心钻研生成测试数据的方法. 其实很简单,用随机数生成器生 ...
- mysql 测试数据的脚本_Mysql脚本 生成测试数据
Mysql脚本 生成测试数据 使用: ./xie.sh -uroot -p'123456' #!/bin/bash #混合测试数据库脚本 #将创建一个single数据库,其中创建一个s1表 #如果数据 ...
最新文章
- 函数式编程之-拒绝空引用异常(Option类型)
- MyBatis拦截器原理探究MyBatis拦截器原理探究
- oracle触发器 select into,Oracle触发器中selectinto报错no_data_found异常处理
- vue2.0s中eventBus实现兄弟组件通信
- 新手学MVC----MVC3.0错误 HTTP 404
- Oralce的内存结构
- 计算并输出1000以内的所有“完数”之和
- dos 操作mysql_dos命令操作数据库
- java servlet init方法_Java HttpServlet.init方法代码示例
- Varnish 缓存
- 测试:第二章 测试过程
- 2020年“华为杯”中国研究生数学建模竞赛题目及简单分析
- Java实现黑客帝国代码雨(待机屏保)
- mysql是bsd协议吗_五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍
- 国外著名英文搜索引擎大全及分类
- cpu排行计算机专业,cpu性能天梯图,详细教您电脑cpu排行榜
- Study「Photoshop」:勾线图
- QT MetaImage 一款图片工具软件
- LEP(Linux Easy Profiling)2017年度颁奖典礼在西邮隆重举行
- 植物大战僵尸用户存档修改(CSDN任务1,20210418)
热门文章
- 多媒体计算机设备清单,多媒体教室配置及清单.doc
- android系统裁剪方法
- 【C# 练习】C# 程序设计实用教程(第2版)黄兴荣
- 称重仪表显示ol怎么解决_地磅称重时仪表显示出现跳数如何解决?
- LumaQQ.NET For Visual Studio 2005 代码下载
- java小游戏实战局域网联机_结对编程3——黄金点小游戏实现局域网联机
- VARCHART XGantt适用于.NET v5.1 Build 337
- SPDY、HTTP/2、QUIC协议
- 完全卸载迈克菲Mcafee的工具
- 卡巴斯基变相提供一年免费服务