Apache Doris、Clickhouse查询性能测试

Apache Doris、Clickhouse查询性能测试

概述:

  • 本测试参照Doris官方性能测试中的Star-Schema-Benchmark测试数据集
  • 操作系统: CentOS Linux release 7.9.2009 (Core)
    • MEM: 102G
    • CPU: 48 core
  • Doris版本: Stable 2.0.1 (规划: 1FE 1BE)
  • Clickhouse版本: LTS 23.8.2.7 (单机)

表创建

  1. doris表

    Tables_in_ssb  |   count
    ---------------+
    customer       | -- 3000000
    dates          | -- 2556
    lineorder2     | -- 10000000
    lineorder_flat2| -- 10000000
    part           | -- 1400000
    supplier       | -- 200000
    
    • doris表DDL

      CREATE TABLE `***` (
          ...
      )
      DUPLICATE KEY(`***`)
      PARTITION BY RANGE(`***`)
      (PARTITION p1 VALUES [("-2147483648"), ("19930101")),
      PARTITION p2 VALUES [("19930101"), ("19940101")),
      PARTITION p3 VALUES [("19940101"), ("19950101")),
      PARTITION p4 VALUES [("19950101"), ("19960101")),
      PARTITION p5 VALUES [("19960101"), ("19970101")),
      PARTITION p6 VALUES [("19970101"), ("19980101")),
      PARTITION p7 VALUES [("19980101"), ("19990101")))
      DISTRIBUTED BY HASH(`***`) BUCKETS 12
      

      建表语句详见脚本 doris_table.sql

  2. clickhouse表

    Tables_in_tutorial |count
    ---------------+
    customer       | -- 3000000
    dates          | -- 2556
    lineorder2     | -- 10000000
    lineorder_flat2| -- 10000000
    part           | -- 1400000
    supplier       | -- 200000
    
    • clickhouse表DDL

      CREATE TABLE `***` (
          ...
      )
      ENGINE = MergeTree
      PRIMARY KEY (LO_ORDERKEY,LO_ORDERDATE)
      ORDER BY (LO_ORDERKEY,LO_ORDERDATE)
      PARTITION BY
          CASE
              WHEN LO_ORDERDATE >= -2147483648 AND LO_ORDERDATE < 19930101 THEN 1
              WHEN LO_ORDERDATE >= 19930101 AND LO_ORDERDATE < 19940101 THEN 2
              WHEN LO_ORDERDATE >= 19940101 AND LO_ORDERDATE < 19950101 THEN 3
              WHEN LO_ORDERDATE >= 19950101 AND LO_ORDERDATE < 19960101 THEN 4
              WHEN LO_ORDERDATE >= 19960101 AND LO_ORDERDATE < 19970101 THEN 5
              WHEN LO_ORDERDATE >= 19970101 AND LO_ORDERDATE < 19980101 THEN 6
              WHEN LO_ORDERDATE >= 19980101 AND LO_ORDERDATE < 19990101 THEN 7
              ELSE 0 
          END
      ;
      

      建表语句详见脚本 clickhouse_table.sql

简单查询

SELECT (LO_ORDERDATE DIV 10000) AS YEAR, S_CITY, P_BRAND, SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit FROM lineorder_flat2 WHERE S_NATION = 'UNITED STATES' AND LO_ORDERDATE >= 19970101 AND LO_ORDERDATE <= 19981231 AND P_CATEGORY = 'MFGR#14' GROUP BY YEAR, S_CITY, P_BRAND ORDER BY YEAR ASC, S_CITY ASC, P_BRAND ASC;
数据库执行时长(s)内存消耗(GiB)CPU消耗
Doris0.100.120.12%
ClickHouse0.220.010.23%
SELECT c_city, s_city, d_year, SUM(lo_revenue) AS REVENUE FROM customer, lineorder2, supplier, dates WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_orderdate = d_datekey AND ( c_city = 'UNITED KI1' OR c_city = 'UNITED KI5' ) AND ( s_city = 'UNITED KI1' OR s_city = 'UNITED KI5' ) AND d_year >= 1990 AND d_year <= 1999 GROUP BY c_city, s_city, d_year ORDER BY d_year ASC, REVENUE DESC;
数据库执行时长(s)内存消耗(GiB)CPU消耗
Doris0.30.420.28%
ClickHouse0.810.230.28

并发查询

-- 100 并发执行
	SELECT (LO_ORDERDATE DIV 10000) AS YEAR, S_CITY, P_BRAND, SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit FROM lineorder_flat2 WHERE S_NATION = 'UNITED STATES' AND LO_ORDERDATE >= 19970101 AND LO_ORDERDATE <= 19981231 AND P_CATEGORY = 'MFGR#14' GROUP BY YEAR, S_CITY, P_BRAND ORDER BY YEAR ASC, S_CITY ASC, P_BRAND ASC;
	SELECT c_city, s_city, d_year, SUM(lo_revenue) AS REVENUE FROM customer, lineorder2, supplier, dates WHERE lo_custkey = c_custkey AND lo_suppkey = s_suppkey AND lo_orderdate = d_datekey AND ( c_city = 'UNITED KI1' OR c_city = 'UNITED KI5' ) AND ( s_city = 'UNITED KI1' OR s_city = 'UNITED KI5' ) AND d_year >= 1990 AND d_year <= 1999 GROUP BY c_city, s_city, d_year ORDER BY d_year ASC, REVENUE DESC;
数据库执行时长(s)内存消耗(GiB)CPU消耗
Doris3.8118.6222.7%
ClickHouse79.7122.8%
  • 内存消耗百分比取值自 Granfana Memory Basic diff(Used)
  • CPU消耗百分比取值自 Granfana CPU Basic (User+System)/4800
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值