Doris、StarRocks 压测对比

xiaokebiubiubiu 2024-06-20 09:05:02 阅读 55

先说结论:

0、本次测试,未调优二者的参数,开箱起服务,直接测试的,部署架构一致。

1、在单表查询下,StarRocks 在部分场景下优于Doris,但是二次查询,二者不分伯仲。

2、在多表查询下,仅在一个场景下Doris速度逊于StarRocks ,大部分场景是Doris优于StarRocks的。

3、在cpu和内存的使用上,doris会比starrocks多吃1.5倍的资源。

压测试验:

1、基础环境

组件

cpu

内存

Cpu架构

磁盘存储

Doris

8C

16G

x86_64

492G

8C

16G

x86_64

492G

8C

16G

x86_64

492G

8C

16G

x86_64

492G

8C

16G

x86_64

492G

StarRocks

8C

16G

x86_64

492G

8C

16G

x86_64

492G

8C

16G

x86_64

492G

8C

16G

x86_64

492G

8C

16G

x86_64

492G

2、版本

Doris-2.0.5 (2024 年 2 月 27 日 发 布)

StarRocks-3.2.3(2024 年 2 月 8 日 发 布)

Release 2.0.5 - Apache Doris

StarRocks version 3.2 | StarRocks

3、压测工具

(1)下载doris的ssb-tools

GitHub - apache/doris: Apache Doris is an easy-to-use, high performance and unified analytics database.

使用doris-master\tools\ssb-tools下的压测脚本

(2)编译脚本

./build-ssb-dbgen.sh

(3)生成测试数据

./gen-ssb-data.sh -s 40

(4)修改配置信息

./conf/doris-cluster.conf

(5)创建表并导入数据

创建表:./create-ssb-tables.sh

导入数据:./load-ssb-data.sh

表名

行数

解释

lineorder

2400万

SSB商品订单表

customer

120万

SSB客户表

part

120万

SSB 零部件表

supplier

8万

SSB 供应商表

dates

2556

日期表

lineorder_flat

2400万

SSB打平后的宽表

4、查询测试

通过单表、多表的sql查询

(1)doris-2.0.5

doris单表:

序号

首次

多次

Q1.1

0.59

0.03

Q1.2

0.19

0.02

Q1.3

0.08

0.03

Q2.1

8.15

0.08

Q2.2

0.08

0.08

Q2.3

0.06

0.06

Q3.1

2.45

0.14

Q3.2

2.55

0.08

Q3.3

0.09

0.06

Q3.4

0.02

0.02

Q4.1

0.89

0.13

Q4.2

0.08

0.05

Q4.3

0.05

0.04

doris多表

序号

首次

多次

Q1.1

0.96

0.04

Q1.2

0.85

0.03

Q1.3

0.03

0.02

Q2.1

3.8

0.16

Q2.2

0.14

0.13

Q2.3

0.13

0.12

Q3.1

0.64

0.34

Q3.2

0.14

0.13

Q3.3

0.14

0.14

Q3.4

0.05

0.05

Q4.1

0.43

0.33

Q4.2

0.16

0.15

Q4.3

0.14

0.12

(2)starrocks-3.2.3

starrocks单表

序号

首次

多次

Q1.1

0.13

0.03

Q1.2

0.05

0.02

Q1.3

0.06

0.02

Q2.1

1.2

0.13

Q2.2

0.11

0.11

Q2.3

0.06

0.06

Q3.1

0.53

0.13

Q3.2

0.32

0.09

Q3.3

0.1

0.09

Q3.4

0.03

0.02

Q4.1

0.4

0.15

Q4.2

0.1

0.06

Q4.3

0.07

0.04

starrocks多表

首次

多次

Q1.1

0.34

0.04

Q1.2

0.32

0.03

Q1.3

0.27

0.03

Q2.1

2.46

0.26

Q2.2

0.24

0.21

Q2.3

0.43

0.19

Q3.1

0.49

0.32

Q3.2

0.26

0.22

Q3.3

0.17

0.16

Q3.4

0.07

0.05

Q4.1

0.52

0.44

Q4.2

0.2

0.18

Q4.3

0.15

0.13

5、对比:

(1)单表对比

序号

doris首次

doris多次

star首次

star多次

Q1.1

0.59

0.03

0.1

0.04

Q1.2

0.19

0.02

0.04

0.04

Q1.3

0.08

0.03

0.08

0.03

Q2.1

8.15

0.08

0.42

0.12

Q2.2

0.08

0.08

0.13

0.12

Q2.3

0.06

0.06

0.07

0.06

Q3.1

2.45

0.14

0.31

0.16

Q3.2

2.55

0.08

0.18

0.09

Q3.3

0.09

0.06

0.11

0.09

Q3.4

0.02

0.02

0.03

0.03

Q4.1

0.89

0.13

0.33

0.2

Q4.2

0.08

0.05

0.1

0.08

Q4.3

0.05

0.04

0.07

0.04

(2)多表对比

序号

doris首次

doris多次

star首次

star多次

Q1.1

0.96

0.04

0.1

0.05

Q1.2

0.85

0.03

0.08

0.04

Q1.3

0.03

0.02

0.04

0.04

Q2.1

3.8

0.16

0.41

0.26

Q2.2

0.14

0.13

0.22

0.2

Q2.3

0.13

0.12

0.21

0.19

Q3.1

0.64

0.34

0.38

0.32

Q3.2

0.14

0.13

0.26

0.22

Q3.3

0.14

0.14

0.38

0.16

Q3.4

0.05

0.05

0.1

0.06

Q4.1

0.43

0.33

0.49

0.42

Q4.2

0.16

0.15

0.22

0.18

Q4.3

0.14

0.12

0.15

0.13

6、cpu、内存使用情况

(1)starrocks

(2)doris

7、测试使用到的sql

--Q1.1SELECT sum(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenueFROM lineorder_flatWHERE LO_ORDERDATE >= 19930101 and LO_ORDERDATE <= 19931231 AND LO_DISCOUNT BETWEEN 1 AND 3 AND LO_QUANTITY < 25;--Q1.2SELECT sum(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE LO_ORDERDATE >= 19940101 and LO_ORDERDATE <= 19940131 AND LO_DISCOUNT BETWEEN 4 AND 6 AND LO_QUANTITY BETWEEN 26 AND 35;--Q1.3SELECT sum(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenueFROM lineorder_flatWHERE weekofyear(LO_ORDERDATE) = 6 AND LO_ORDERDATE >= 19940101 and LO_ORDERDATE <= 19941231 AND LO_DISCOUNT BETWEEN 5 AND 7 AND LO_QUANTITY BETWEEN 26 AND 35;--Q2.1SELECT sum(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS year, P_BRANDFROM lineorder_flatWHERE P_CATEGORY = 'MFGR#12' AND S_REGION = 'AMERICA'GROUP BY year, P_BRANDORDER BY year, P_BRAND;--Q2.2SELECT sum(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS year, P_BRANDFROM lineorder_flatWHERE P_BRAND >= 'MFGR#2221' AND P_BRAND <= 'MFGR#2228' AND S_REGION = 'ASIA'GROUP BY year, P_BRANDORDER BY year, P_BRAND;--Q2.3SELECT sum(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS year, P_BRANDFROM lineorder_flatWHERE P_BRAND = 'MFGR#2239' AND S_REGION = 'EUROPE'GROUP BY year, P_BRANDORDER BY year, P_BRAND;--Q3.1SELECT C_NATION, S_NATION, (LO_ORDERDATE DIV 10000) AS year, sum(LO_REVENUE) AS revenueFROM lineorder_flatWHERE C_REGION = 'ASIA' AND S_REGION = 'ASIA' AND LO_ORDERDATE >= 19920101 AND LO_ORDERDATE <= 19971231GROUP BY C_NATION, S_NATION, yearORDER BY year ASC, revenue DESC;--Q3.2SELECT C_CITY, S_CITY, (LO_ORDERDATE DIV 10000) AS year, sum(LO_REVENUE) AS revenueFROM lineorder_flatWHERE C_NATION = 'UNITED STATES' AND S_NATION = 'UNITED STATES' AND LO_ORDERDATE >= 19920101 AND LO_ORDERDATE <= 19971231GROUP BY C_CITY, S_CITY, yearORDER BY year ASC, revenue DESC;--Q3.3SELECT C_CITY, S_CITY, (LO_ORDERDATE DIV 10000) AS year, sum(LO_REVENUE) AS revenueFROM lineorder_flatWHERE C_CITY in ( 'UNITED KI1' ,'UNITED KI5') AND S_CITY in ( 'UNITED KI1' ,'UNITED KI5') AND LO_ORDERDATE >= 19920101 AND LO_ORDERDATE <= 19971231GROUP BY C_CITY, S_CITY, yearORDER BY year ASC, revenue DESC;--Q3.4SELECT C_CITY, S_CITY, (LO_ORDERDATE DIV 10000) AS year, sum(LO_REVENUE) AS revenueFROM lineorder_flatWHERE C_CITY in ('UNITED KI1', 'UNITED KI5') AND S_CITY in ( 'UNITED KI1', 'UNITED KI5') AND LO_ORDERDATE >= 19971201 AND LO_ORDERDATE <= 19971231GROUP BY C_CITY, S_CITY, yearORDER BY year ASC, revenue DESC;--Q4.1SELECT (LO_ORDERDATE DIV 10000) AS year, C_NATION, sum(LO_REVENUE - LO_SUPPLYCOST) AS profitFROM lineorder_flatWHERE C_REGION = 'AMERICA' AND S_REGION = 'AMERICA' AND P_MFGR in ( 'MFGR#1' , 'MFGR#2')GROUP BY year, C_NATIONORDER BY year ASC, C_NATION ASC;--Q4.2SELECT (LO_ORDERDATE DIV 10000) AS year, S_NATION, P_CATEGORY, sum(LO_REVENUE - LO_SUPPLYCOST) AS profitFROM lineorder_flatWHERE C_REGION = 'AMERICA' AND S_REGION = 'AMERICA' AND LO_ORDERDATE >= 19970101 and LO_ORDERDATE <= 19981231 AND P_MFGR in ( 'MFGR#1' , 'MFGR#2')GROUP BY year, S_NATION, P_CATEGORYORDER BY year ASC, S_NATION ASC, P_CATEGORY ASC;--Q4.3SELECT (LO_ORDERDATE DIV 10000) AS year, S_CITY, P_BRAND, sum(LO_REVENUE - LO_SUPPLYCOST) AS profitFROM lineorder_flatWHERE S_NATION = 'UNITED STATES' AND LO_ORDERDATE >= 19970101 and LO_ORDERDATE <= 19981231 AND P_CATEGORY = 'MFGR#14'GROUP BY year, S_CITY, P_BRANDORDER BY year ASC, S_CITY ASC, P_BRAND ASC;多表查询--Q1.1select sum(lo_revenue) as revenuefrom lineorder join dates on lo_orderdate = d_datekeywhere d_year = 1993 and lo_discount between 1 and 3 and lo_quantity < 25;--Q1.2select sum(lo_revenue) as revenuefrom lineorderjoin dates on lo_orderdate = d_datekeywhere d_yearmonthnum = 199401and lo_discount between 4 and 6and lo_quantity between 26 and 35;--Q1.3select sum(lo_revenue) as revenuefrom lineorderjoin dates on lo_orderdate = d_datekeywhere d_weeknuminyear = 6 and d_year = 1994and lo_discount between 5 and 7and lo_quantity between 26 and 35;--Q2.1select sum(lo_revenue) as lo_revenue, d_year, p_brandfrom lineorderjoin dates on lo_orderdate = d_datekeyjoin part on lo_partkey = p_partkeyjoin supplier on lo_suppkey = s_suppkeywhere p_category = 'MFGR#12' and s_region = 'AMERICA'group by d_year, p_brandorder by d_year, p_brand;--Q2.2select sum(lo_revenue) as lo_revenue, d_year, p_brandfrom lineorderjoin dates on lo_orderdate = d_datekeyjoin part on lo_partkey = p_partkeyjoin supplier on lo_suppkey = s_suppkeywhere p_brand between 'MFGR#2221' and 'MFGR#2228' and s_region = 'ASIA'group by d_year, p_brandorder by d_year, p_brand;--Q2.3select sum(lo_revenue) as lo_revenue, d_year, p_brandfrom lineorderjoin dates on lo_orderdate = d_datekeyjoin part on lo_partkey = p_partkeyjoin supplier on lo_suppkey = s_suppkeywhere p_brand = 'MFGR#2239' and s_region = 'EUROPE'group by d_year, p_brandorder by d_year, p_brand;--Q3.1select c_nation, s_nation, d_year, sum(lo_revenue) as lo_revenuefrom lineorderjoin dates on lo_orderdate = d_datekeyjoin customer on lo_custkey = c_custkeyjoin supplier on lo_suppkey = s_suppkeywhere c_region = 'ASIA' and s_region = 'ASIA'and d_year >= 1992 and d_year <= 1997group by c_nation, s_nation, d_yearorder by d_year asc, lo_revenue desc;--Q3.2select c_city, s_city, d_year, sum(lo_revenue) as lo_revenuefrom lineorderjoin dates on lo_orderdate = d_datekeyjoin customer on lo_custkey = c_custkeyjoin supplier on lo_suppkey = s_suppkeywhere c_nation = 'UNITED STATES' and s_nation = 'UNITED STATES'and d_year >= 1992 and d_year <= 1997group by c_city, s_city, d_yearorder by d_year asc, lo_revenue desc;--Q3.3select c_city, s_city, d_year, sum(lo_revenue) as lo_revenuefrom lineorderjoin dates on lo_orderdate = d_datekeyjoin customer on lo_custkey = c_custkeyjoin supplier on lo_suppkey = s_suppkeywhere (c_city='UNITED KI1' or c_city='UNITED KI5')and (s_city='UNITED KI1' or s_city='UNITED KI5')and d_year >= 1992 and d_year <= 1997group by c_city, s_city, d_yearorder by d_year asc, lo_revenue desc;--Q3.4select c_city, s_city, d_year, sum(lo_revenue) as lo_revenuefrom lineorderjoin dates on lo_orderdate = d_datekeyjoin customer on lo_custkey = c_custkeyjoin supplier on lo_suppkey = s_suppkeywhere (c_city='UNITED KI1' or c_city='UNITED KI5') and (s_city='UNITED KI1' or s_city='UNITED KI5') and d_yearmonth = 'Dec1997'group by c_city, s_city, d_yearorder by d_year asc, lo_revenue desc;--Q4.1select d_year, c_nation, sum(lo_revenue) - sum(lo_supplycost) as profitfrom lineorderjoin dates on lo_orderdate = d_datekeyjoin customer on lo_custkey = c_custkeyjoin supplier on lo_suppkey = s_suppkeyjoin part on lo_partkey = p_partkeywhere c_region = 'AMERICA' and s_region = 'AMERICA' and (p_mfgr = 'MFGR#1' or p_mfgr = 'MFGR#2')group by d_year, c_nationorder by d_year, c_nation;--Q4.2select d_year, s_nation, p_category, sum(lo_revenue) - sum(lo_supplycost) as profitfrom lineorderjoin dates on lo_orderdate = d_datekeyjoin customer on lo_custkey = c_custkeyjoin supplier on lo_suppkey = s_suppkeyjoin part on lo_partkey = p_partkeywhere c_region = 'AMERICA'and s_region = 'AMERICA'and (d_year = 1997 or d_year = 1998)and (p_mfgr = 'MFGR#1' or p_mfgr = 'MFGR#2')group by d_year, s_nation, p_categoryorder by d_year, s_nation, p_category;--Q4.3select d_year, s_city, p_brand, sum(lo_revenue) - sum(lo_supplycost) as profitfrom lineorderjoin dates on lo_orderdate = d_datekeyjoin customer on lo_custkey = c_custkeyjoin supplier on lo_suppkey = s_suppkeyjoin part on lo_partkey = p_partkeywhere c_region = 'AMERICA'and s_nation = 'UNITED STATES'and (d_year = 1997 or d_year = 1998)and p_category = 'MFGR#14'group by d_year, s_city, p_brandorder by d_year, s_city, p_brand;



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。