大叔经验分享(140)OLAP引擎对比测试
一 测试数据
SSB (Star Schema Benchmark)
SSB
SSB将TPC-H的雪花模式简化为了星型模式,将基准查询由TPC-H的复杂Ad-Hoc查询改为了结构更固定的OLAP查询
table | comment |
---|---|
lineorder | 订单表 |
customer | 用户表 |
supplier | 供应商表 |
part | 零件表 |
dates | 日期表 |
lineorder_flat | 订单宽表 |
测试sql:13个
数据生成
https://github.com/vadimtk/ssb-dbgen
dbgen -s 100 -T a
数据大小
TOTAL | lineorder | customer | supplier | part | dates | lineorder_flat | |
---|---|---|---|---|---|---|---|
Rows | 6亿 600,038,145 | 3,000,000 | 200,000 | 140,000 | 2,556 | 6亿 | |
Size(csv) | 68G | 67G | 317M | 19M | 135M | 270K | |
Size(parquet+snappy) | 17G | 16G | 117M | 7M | 15M | 30K | 42G |
Size(doris) | 16G | 15G | 138M | 9M | 12M | 33K | 59G |
Size(dorisdb) | 16G | 15G | 138M | 9M | 12M | 33K | 59G |
Size(clickhouse) | 18G | 18G | 120M | 8M | 25M |
测试数据库
Component | DB | Comment |
---|---|---|
Hive | test_ssb_100_p | csv |
Hive | test_ssb_100_p | parquet+snappy |
Clickhouse | ssb_100 | |
DorisDB | ssb_100 | |
Doris | ssb_100 |
二 测试引擎
Engine | Version | Resource | Host | Cmd |
---|---|---|---|---|
Impala | 3.1.1 | (2G+6G)*10 | impala-shell -i $server:21000 -d test_ssb_100_p | |
Presto | 0.231 | 12G*3 | /data/soft/presto --server $server:7080 --catalog hive --schema test_ssb_100_p | |
ClickHouse | 20.8.7.15 | 32G*2 | /104 | clickhouse-client -m -h $server --port 9000 --password default -d ssb_100 |
Doris | 0.14.0 | 32G*4 | mysql -h$server -P9030 -uroot -proot ssb_100 | |
DorisDB | 1.15.0 | 32G*4 | mysql -h$server -P9031 -uroot -proot ssb_100 |
三 测试结果
多表join测试
单位:毫秒
Query | Impala | Doris0.14 | Doris1.0 | DorisDB | Presto |
---|---|---|---|---|---|
q1.1 | 879 | 714 | 230 | 417 | 10000 |
q1.2 | 966 | 517 | 70 | 325 | 11000 |
q1.3 | 982 | 522 | 40 | 330 | 8000 |
q2.1 | 1675 | 5754 | 5100 | 657 | 51000 |
q2.2 | 1764 | 4423 | 4200 | 514 | 32000 |
q2.3 | 1717 | 4126 | 4090 | 449 | 29000 |
q3.1 | 2535 | 6550 | 6660 | 1101 | 50000 |
q3.2 | 1693 | 4934 | 6930 | 590 | 40000 |
q3.3 | 1729 | 4303 | 4110 | 539 | 30000 |
q3.4 | 1658 | 589 | 170 | 499 | 21000 |
q4.1 | 2437 | 8498 | 7980 | 1359 | 55000 |
q4.2 | 2146 | 3411 | 2690 | 1017 | 34000 |
q4.3 | 2177 | 2790 | 2220 | 828 | 57000 |
SCORE | 0 | 0 | 4 | 9 | 0 |
TOTAL | 22,358 | 47,131 | 44,430 | 8,625 | 428,000 |
结论
- 整体查询时长最快的是Droisdb
- 13个查询中,9个最快的是Dorisdb,4个最快的是Doris1.0
ps
- Impala和Presto底层查询Parquet+Snappy
- Clickhouse多表查询需要改造sql,不参与
- doris整体耗时是dorisdb的5-6倍
单表测试
单位:毫秒
Query | Clickhouse | Impala | Doris0.14 | Doris1.0 | DorisDB |
---|---|---|---|---|---|
q1.1 | 163 | 775 | 509 | 250 | 254 |
q1.2 | 64 | 759 | 382 | 70 | 204 |
q1.3 | 53 | 871 | 408 | 200 | 247 |
q2.1 | 853 | 1137 | 1232 | 670 | 376 |
q2.2 | 729 | 990 | 1321 | 630 | 465 |
q2.3 | 675 | 878 | 1161 | 460 | 269 |
q3.1 | 1082 | 1418 | 1830 | 780 | 576 |
q3.2 | 610 | 1383 | 1483 | 750 | 383 |
q3.3 | 528 | 1288 | 1174 | 430 | 276 |
q3.4 | 58 | 1155 | 1111 | 50 | 244 |
q4.1 | 1188 | 1298 | 1986 | 890 | 531 |
q4.2 | 356 | 1513 | 1631 | 280 | 561 |
q4.3 | 277 | 1390 | 1413 | 230 | 483 |
SCORE | 3 | 0 | 0 | 3 | 7 |
TOTAL | 6,636 | 14,855 | 15,641 | 5,690 | 4,869 |
结论
- 整体查询时长最快的是Dorisdb
- 13个查询中,最快的3个查询是Clickhouse,3个是Doris1.0,7个查询是Dorisdb
- doris1.0整体耗时已经追上dorisdb
ps
- sql脚本由于各种语法不兼容在presto下无法运行
---------------------------------------------------------------- 结束啦,我是大魔王先生的分割线 :) ----------------------------------------------------------------
- 由于大魔王先生能力有限,文中可能存在错误,欢迎指正、补充!
- 感谢您的阅读,如果文章对您有用,那么请为大魔王先生轻轻点个赞,ありがとう
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2019-05-20 大叔经验分享(58)kudu写入压力大时报错
2019-05-20 Linux基础之重定向stdout/stderr