大致介绍

TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。
Clickhouse是俄罗斯Yandex公司开源的一个非常快的数据管理系统,性能非常强悍。Apache Doris是百度开源的另一个基于 MPP 的交互式 SQL 数据仓库,主要用于解决报表和多维分析,成熟稳定。

下载编译

下载官方网址
也可以通过Git下载

git clone https://github.com/gregrahn/tpcds-kit.git
cd tpcds-kit/tools
make OS=LINUX
tpcds.sql是建表SQL
[tools]$ ll *.sql
-rw-r----- 1 prodadmin prodadmin 13875 Mar 12 03:44 tpcds_ri.sql
-rw-r----- 1 prodadmin prodadmin 22153 Mar 12 03:44 tpcds_source.sql
-rw-r----- 1 prodadmin prodadmin 30001 Mar 12 03:44 tpcds.sql
dsdgen是生成数据的工具,dsqgen是生成Query的工具
[tools]$ ll ds*
-rwxr-x--- 1 prodadmin prodadmin 455880 Apr 16 19:15 dsdgen
-rwxr-x--- 1 prodadmin prodadmin 292254 Apr 16 19:15 dsqgen
在query_templates中是query模板
[tools]$ ls ../query_templates/
ansi.tpl     query12.tpl  query18.tpl  query23.tpl  query29.tpl  query34.tpl  query3.tpl   query45.tpl  query50.tpl  query56.tpl  query61.tpl  query67.tpl  query72.tpl  query78.tpl  query83.tpl  query89.tpl  query94.tpl  query9.tpl
db2.tpl      query13.tpl  query19.tpl  query24.tpl  query2.tpl   query35.tpl  query40.tpl  query46.tpl  query51.tpl  query57.tpl  query62.tpl  query68.tpl  query73.tpl  query79.tpl  query84.tpl  query8.tpl   query95.tpl  README
netezza.tpl  query14.tpl  query1.tpl   query25.tpl  query30.tpl  query36.tpl  query41.tpl  query47.tpl  query52.tpl  query58.tpl  query63.tpl  query69.tpl  query74.tpl  query7.tpl   query85.tpl  query90.tpl  query96.tpl  sqlserver.tpl
oracle.tpl   query15.tpl  query20.tpl  query26.tpl  query31.tpl  query37.tpl  query42.tpl  query48.tpl  query53.tpl  query59.tpl  query64.tpl  query6.tpl   query75.tpl  query80.tpl  query86.tpl  query91.tpl  query97.tpl  templates.lst
query10.tpl  query16.tpl  query21.tpl  query27.tpl  query32.tpl  query38.tpl  query43.tpl  query49.tpl  query54.tpl  query5.tpl   query65.tpl  query70.tpl  query76.tpl  query81.tpl  query87.tpl  query92.tpl  query98.tpl
query11.tpl  query17.tpl  query22.tpl  query28.tpl  query33.tpl  query39.tpl  query44.tpl  query4.tpl   query55.tpl  query60.tpl  query66.tpl  query71.tpl  query77.tpl  query82.tpl  query88.tpl  query93.tpl  query99.tpl

建表语句

请根据Hive、Doris、Clickhouse等组件特点,修改建表语句,请注意,列是否为空,列的顺序等和后面步骤的导入数据密切相关,请勿轻易修改。
1 Clickhouse数据类型
2 Doris建表和数据类型

create table dbgen_version
create table customer_address
create table customer_demographics
create table date_dim
create table warehouse
create table ship_mode
create table time_dim
create table reason
create table income_band
create table item
create table store
create table call_center
create table customer
create table web_site
create table store_returns
create table household_demographics
create table web_page
create table promotion
create table catalog_page
create table inventory
create table catalog_returns
create table web_returns
create table web_sales
create table catalog_sales
create table store_sales

数据生成

可以建一个脚本,来生成数据
1 数据分隔符是“|”,空值默认为空。Clickhouse支持的格式,Doris Load格式。
2 scale单位为G,指生成的数据量大小,paralle指分割多少个文件,child指第几个文件

[tools]$ cat build_data_tsv.h
echo $1
mkdir ../../data_tsv/
nohup ./dsdgen  -scale 100 -dir ../../data_tsv/ -paralle 10 -child $1 > child$1.log &

数据导入

  • Clickhouse数据导入,一个例子,我写了一个convert.py的小脚本,处理分隔符、空值、列顺序等问题
if [ ! -f "./data_tsv/dbgen_version_$1_10.done" ]; then
cat ./data_tsv/dbgen_version_$1_10.dat|python convert.py ck|clickhouse-client --query="INSERT INTO default.dbgen_version_dist FORMAT CSV"
touch ./data_tsv/dbgen_version_$1_10.done
fi
  • Doris数据导入
cat ./data_tsv/dbgen_version_$1_10.dat|python convert.py dr dbgen_version|curl --location-trusted -u root: -H "label:dbgen_version_$1_10_" -H "timeout:1200" -T - http://ip:port/api/testdb/dbgen_version/_stream_load

生成Query

cat build_sql.sh
./dsqgen \
-DIRECTORY ../query_templates \
-INPUT ../query_templates/templates.lst \
-VERBOSE Y \
-QUALIFY Y \
-SCALE 100 \
-DIALECT sqlserver \
-OUTPUT_DIR ../../query/

Query改写

比如如下的SQL,在Doris中是可以正确的执行的,但是在Clickhouse中不行,CK中需要子查询嵌套或者用global inner join来显示指定broadcast的字表。

selectc_last_name,c_first_name,substr(s_city,1,30),ss_ticket_number,amt,profitfrom(select ss_ticket_number,ss_customer_sk,store.s_city,sum(ss_coupon_amt) amt,sum(ss_net_profit) profitfrom store_sales,date_dim,store,household_demographicswhere store_sales.ss_sold_date_sk = date_dim.d_date_skand store_sales.ss_store_sk = store.s_store_skand store_sales.ss_hdemo_sk = household_demographics.hd_demo_skand (household_demographics.hd_dep_count = 1 or household_demographics.hd_vehicle_count > -1)and date_dim.d_dow = 1and date_dim.d_year in (2000,2000+1,2000+2)and store.s_number_employees between 200 and 295group by ss_ticket_number,ss_customer_sk,ss_addr_sk,store.s_city) ms,customerwhere ss_customer_sk = c_customer_skorder by c_last_name,c_first_name,substr(s_city,1,30), profitlimit 10;

改写后

select c_last_name, c_first_name, substr(tbl1.s_city,1,30), ss_ticket_number, amt, profit
from customer_dist
global inner join (select ss_ticket_number, ss_customer_sk, s_city, sum(ss_coupon_amt) as amt, sum(ss_net_profit) as profitfrom store_sales_distglobal inner join ( select d_date_sk from date_dim_dist where date_dim_dist.d_dow = 1 and d_year in (2000,2000+1,2000+2) ) on ss_sold_date_sk = d_date_skglobal inner join ( select s_store_sk, s_city from store_dist where s_number_employees between 200 and 295 ) on ss_store_sk = s_store_skglobal inner join ( select hd_demo_sk from household_demographics_dist where hd_dep_count = 1 or hd_vehicle_count > -1 ) on ss_hdemo_sk = hd_demo_skgroup by ss_ticket_number, ss_customer_sk, ss_addr_sk, s_city
) tbl1 on ss_customer_sk = c_customer_sk
order by c_last_name, c_first_name, substr(s_city,1,30), profit
limit 10;

测试结论

1 导入数据Clickhouse快
2 数据压缩率Clickhouse好
3 单表查询Clickhouse快
4 Join查询两者各有优劣,数据量小情况下Clickhouse好,数据量大Doris好
5 Doris对SQL支持情况要好

TPC-DS用于Clickhouse和Doris性能测试相关推荐

  1. clickhouse 子查询_TPCDS用于Clickhouse和Doris性能测试

    大致介绍 TPC-DS采用星型.雪花型等多维数据模式.它包含7张事实表,17张纬度表平均每张表含有18列.其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP.这个测试集包含 ...

  2. 比MySQL快801倍,OLAP两大神器ClickHouse和Doris到底怎么选?

    对于匠人而言,一项手艺,如果学不会,结果只有两种:一是低头求人,二是花钱买成品. 对于程序员而言,一款热门软件,如果玩不转,结果也是两种:一是向高手求教,二是看着别人升职加薪. 2021年4月程序员薪 ...

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

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

  4. ClickHouse之简单性能测试

    前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse,接下来进行简单的性能测试.测试数据来源于美国民用航班的数据,从1987年到2017年,有1.7亿条. 环境: centos ...

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

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

  6. tpc ds mysql_TPC-DS 生成数据

    简介 其实,使用 TPC-DS 生成系统性能测试的数据,说简单也简单,说难,确实也不好做! 关键是在每一步的操作中,如果遇到了问题,该怎么样处理,这个是个问题的关键. 下面就将生成的步骤简单描述一下, ...

  7. tpc ds安装教程 linux,TPC-DS测试hadoop 安装步骤

    1.TPC-DS下载地址如下 http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp 1.安装依赖 y ...

  8. Clickhouse与Doris的区别

    Doris使用较为简单,join功能更强大,运维更简单,灵活的扩容缩容,分布式更强,支持事务和幂等性导数 Clickhouse性能更佳,导入性能和单表查询性能更好,同时可靠性更好,支持非常多的表引擎, ...

  9. mysql、clickhouse读写分离性能测试

    背景: 直接用clickhosue处理,每次更新有1秒的延迟(目前提交机制1秒或者1000条提交一次): clickhouse支持导入mysql数据,也支持统计查询mysql数据: 所以测试评估一下m ...

最新文章

  1. uboot readme 文件 (1)
  2. TiP:湖大于峰组综述​病原体分泌的宿主模拟物在植物病害发展中的新作用!...
  3. How to recover from 'programmers burnout(转)
  4. leetcode算法题--无重复字符的最长子串
  5. php调取 zabbix实时数据_zabbix-基础系列(三)-zabbix安装[官方版]
  6. android音频调制通讯,android音频口通信(一)——2FSK信号调制
  7. python3.4学习笔记(九) Python GUI桌面应用开发工具选择
  8. 前端安全配置之Content-Security-Policy(csp)
  9. python处理文件名_[请教]python的中文文件名处理
  10. SQLite数据操作
  11. cuda无法在电脑上运行_办公技巧 | 专治PPT在别的电脑上无法播放的神器!
  12. mysql简述光标_MySQL数据库光标使用介绍
  13. vue导出数据为excel且设置样式
  14. python计算iris数据集的均值_Iris数据集实战
  15. MDui库又一次更新了,重构了绘制的相关逻辑
  16. .Net Core微服务化ABP之六——处理Authentication
  17. 哈迪-温伯格平衡(Hardy-Weinberg equilibrium)法则
  18. Python串口通信发送浮点型数据
  19. word设置页码不在第一页开始;删除页眉横线的小技巧
  20. 调试经验——键盘C键V键和H键失灵

热门文章

  1. 中国首款国产通用型云操作系统,究竟是如何诞生的
  2. React入门笔记(一)
  3. hbuilderx 各种项目 开发区别 uni-app 5+ web2app vue mui plus
  4. newifi 3刷pandorabox固件
  5. 溢信IP guard文档加密系统控制台看着正常客户端无加密图标问题解决
  6. 产品读书《原则:生活和工作》
  7. 分治算法求解棋盘覆盖问题
  8. linux 网络设备 if_net,struct net_device网络设备结构体详解
  9. APP天气预报图标素材下载
  10. Python调用周立功CAN接口卡接口库函数(接收数据)