第一部分:编译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 that clickhouse-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进行查询测试相关推荐

  1. tpc ds mysql_TPC-DS 数据仓库查询性能测试

    最近,需要导入大量的测试数据来评估下某个产品复杂查询SQL性能是否能满足需要,然后,领导大致提了下TPC,找到了TPC-DS工具,创造数据,利用SQL查询模板查询. 一.安装TPC-DS工具 1.下载 ...

  2. 如何使用TPC-DS生成测试数据并导入MySQL

    测试环境 centos7 mysql搭建指南可参考:https://lrting.top/backend/2111/ 安装依赖: yum install gcc make flex bison bya ...

  3. tpc ds 导入到oracle,用TPC-DS测试Sql server,Oracle

    TPC-DS是什么 TPC-DS是TPC组织发布的用于测试决策系统的基准测试,是TPC-H的改进版.我们可以用它生成测试数据集和sql语句来测试数据库的OLAP能力. 最近我们用TPC-DS测试了一下 ...

  4. 基于GUI的mcc编译和dll生成

    基于GUI的mcc编译和dll生成 1.mcc的编译 1.1 MCRInstaller编译器的安装 找到Matlab下的MCRInstaller,双击MCRInstaller编译器,运行安装. 1.2 ...

  5. 一个C/C++程序从编译到最终生成可执行文件的全过程分析

    一个C/C++程序从编译到最终生成可执行文件的全过程分析 C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件  1.编译预处理  读取 ...

  6. C/C++程序从编译到最终生成可执行文件的过程分析

    转载http://apps.hi.baidu.com/share/detail/32660500 C/C++程序编译步骤 如何生成可执行文件 ***************************** ...

  7. Linux下c和cuda混合编译,并生成动态链接库.so和使用

    Linux下c和cuda混合编译,并生成动态链接库.so和使用 2016-08-27 14:27 98人阅读 评论(0) 收藏 举报 分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得 ...

  8. 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?...

    [i.MX6UL/i.MX6ULL开发常见问题]2.3单独编译内核,uboot生成很多文件,具体用哪一个? 答:内核编译出来的文件是~/MYiR-imx-Linux/arch/arm/boot/目录下 ...

  9. 调试与对拍(一):生成测试数据+对拍

    今天打比赛时令小编很气愤,隔壁LSH有文件运行错误,重提了一遍老师就收,而小编重提却爱搭不理,于是小编决定还是自己造个数据把代码重测一遍,于是潜心钻研生成测试数据的方法. 其实很简单,用随机数生成器生 ...

  10. mysql 测试数据的脚本_Mysql脚本 生成测试数据

    Mysql脚本 生成测试数据 使用: ./xie.sh -uroot -p'123456' #!/bin/bash #混合测试数据库脚本 #将创建一个single数据库,其中创建一个s1表 #如果数据 ...

最新文章

  1. 函数式编程之-拒绝空引用异常(Option类型)
  2. MyBatis拦截器原理探究MyBatis拦截器原理探究
  3. oracle触发器 select into,Oracle触发器中selectinto报错no_data_found异常处理
  4. vue2.0s中eventBus实现兄弟组件通信
  5. 新手学MVC----MVC3.0错误 HTTP 404
  6. Oralce的内存结构
  7. 计算并输出1000以内的所有“完数”之和
  8. dos 操作mysql_dos命令操作数据库
  9. java servlet init方法_Java HttpServlet.init方法代码示例
  10. Varnish 缓存
  11. 测试:第二章 测试过程
  12. 2020年“华为杯”中国研究生数学建模竞赛题目及简单分析
  13. Java实现黑客帝国代码雨(待机屏保)
  14. mysql是bsd协议吗_五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍
  15. 国外著名英文搜索引擎大全及分类
  16. cpu排行计算机专业,cpu性能天梯图,详细教您电脑cpu排行榜
  17. Study「Photoshop」:勾线图
  18. QT MetaImage 一款图片工具软件
  19. LEP(Linux Easy Profiling)2017年度颁奖典礼在西邮隆重举行
  20. 植物大战僵尸用户存档修改(CSDN任务1,20210418)

热门文章

  1. 多媒体计算机设备清单,多媒体教室配置及清单.doc
  2. android系统裁剪方法
  3. 【C# 练习】C# 程序设计实用教程(第2版)黄兴荣
  4. 称重仪表显示ol怎么解决_地磅称重时仪表显示出现跳数如何解决?
  5. LumaQQ.NET For Visual Studio 2005 代码下载
  6. java小游戏实战局域网联机_结对编程3——黄金点小游戏实现局域网联机
  7. VARCHART XGantt适用于.NET v5.1 Build 337
  8. SPDY、HTTP/2、QUIC协议
  9. 完全卸载迈克菲Mcafee的工具
  10. 卡巴斯基变相提供一年免费服务