大叔经验分享(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 Doris DorisDB Presto
q1.1 879 714 417 10000
q1.2 966 517 325 11000
q1.3 982 522 330 8000
q2.1 1675 5754 657 51000
q2.2 1764 4423 514 32000
q2.3 1717 4126 449 29000
q3.1 2535 6550 1101 50000
q3.2 1693 4934 590 40000
q3.3 1729 4303 539 30000
q3.4 1658 589 499 21000
q4.1 2437 8498 1359 55000
q4.2 2146 3411 1017 34000
q4.3 2177 2790 828 57000
SCORE 0 0 13 0
TOTAL 22,358 47,131 8,625 428,000

结论

  • 整体查询时长最快的是Droisdb
  • 13个查询中,最快的都是Dorisdb

ps

  • Impala和Presto底层查询Parquet+Snappy
  • Clickhouse多表查询需要改造sql,不参与
  • doris整体耗时是dorisdb的6倍

单表测试

单位:毫秒

Query Clickhouse Impala Doris DorisDB
q1.1 163 775 509 254
q1.2 64 759 382 204
q1.3 53 871 408 247
q2.1 853 1137 1232 376
q2.2 729 990 1321 465
q2.3 675 878 1161 269
q3.1 1082 1418 1830 576
q3.2 610 1383 1483 383
q3.3 528 1288 1174 276
q3.4 58 1155 1111 244
q4.1 1188 1298 1986 531
q4.2 356 1513 1631 561
q4.3 277 1390 1413 483
SCORE 6 0 0 7
TOTAL 6,636 14,855 15,641 4,869

结论

  • 整体查询时长最快的是Dorisdb
  • 13个查询中,最快的6个查询是Clickhouse,7个查询是Dorisdb
  • doris整体耗时是dorisdb的3倍

ps

  • sql脚本由于各种语法不兼容在presto下无法运行