TiDB 5.0 在TPCH和SSB基准测试下OLAP方面的能力表现

【是否原创】是
【首发渠道】TiDB 社区
【首发渠道链接】
【目录】
一、服务器的配置
二、集群部署模式
三、TPC-H基准压测
四、SSB基准压测
五、总结
【正文】
一、服务器配置
1、3台腾讯云服务器
2、服务器配置
CPU: 32c (Intel® Xeon® Platinum 8255C CPU @ 2.50GHz)
MEM: 128G
Disk: 3.5T Nvme盘 1块
二、集群部署模式
1、自建集群数据库组件均采用混合部署方式
2、腾讯云Doris和ClickHouse采用独立部署
三、TPC-H基准压测
TPC-H 基准测试是由TPC-D发展而来的,是面向商品零售业的决策支持系统测试基准,它定义了8张表,22个查询,遵循SQL92;基准的数据库模式遵循第三范式;新兴的数据仓库开始采用新的模型,如星型模型、雪花模型。
数据规模:数据文件100G,数据条数如下


表的信息:2个事实表:lineorder,orders 6个维度表:customer,part,parsupp,supplier,region,nation
数据查询:22条标准SQL查询测试语句:统计查询、多表关联、sum、复杂条件、group by、order by等组合方式

备注:greenplum和spark+parquet 两款产品的压测数据是摘自pingcap官方。

TiFlash 开启 MPP功能,DorisDB和Doris分别配置并行度为(set parallel_fragment_exec_instance_num = 8;)。从该基准测试结果看,TiDB TiFlash、DorisDB、Doris、Greenplum、Spark+parquet 5款产品TiDB和DorisDB性能表现最佳,整体上DorisDB相对优越点,TiDB 5.0在OLAP场景下性能有显著提升。

四、SSB基准压测
SSB(Star Schema Benchmark)是麻省州立大学波士顿校区的研究人员定义的基于现实商业应用的数据模型,业界公认用来模拟决策支持类应用,比较公正和中立。
数据规模:数据文件100G,数据条数如下:
image
表的信息:1张大宽表:lineorder_flat;1张事实表:lineorder4张维度表:customer,part,dates,supplier
数据查询:2类查询场景(单表和多表join)每类场景下有13条标准SQL查询测试语句:统计查询、多表关联、sum、复杂条件、group by、order by等组合方式

单表聚合计算压测结果:


备注: DorisDB和Doris分别配置并行度为(set parallel_fragment_exec_instance_num = 8;)

在该压测场景中对lineorder_flat宽表按照LO_ORDERDATE字段进行范围分区比不分区性能要好,由于TiFlash MPP功能暂时不支持分区表,所以本次压测TiFlash MPP能力未生效。在Q1的3个聚合查询表现还可以,但在后面的Q2-Q4宽表聚合查询场景下TiFlash的能力还有很大的提升空间。

如下是宽表的表结构:
CREATE TABLE lineorder_flat (
LO_ORDERKEY int(11) NOT NULL,
LO_ORDERDATE date NOT NULL,
LO_LINENUMBER tinyint(4) NOT NULL,
LO_CUSTKEY int(11) NOT NULL,
LO_PARTKEY int(11) NOT NULL,
LO_SUPPKEY int(11) NOT NULL,
LO_ORDERPRIORITY varchar(100) NOT NULL,
LO_SHIPPRIORITY tinyint(4) NOT NULL,
LO_QUANTITY tinyint(4) NOT NULL,
LO_EXTENDEDPRICE int(11) NOT NULL,
LO_ORDTOTALPRICE int(11) NOT NULL,
LO_DISCOUNT tinyint(4) NOT NULL,
LO_REVENUE int(11) NOT NULL,
LO_SUPPLYCOST int(11) NOT NULL,
LO_TAX tinyint(4) NOT NULL,
LO_COMMITDATE date NOT NULL,
LO_SHIPMODE varchar(100) NOT NULL,
C_NAME varchar(100) NOT NULL,
C_ADDRESS varchar(100) NOT NULL,
C_CITY varchar(100) NOT NULL,
C_NATION varchar(100) NOT NULL,
C_REGION varchar(100) NOT NULL,
C_PHONE varchar(100) NOT NULL,
C_MKTSEGMENT varchar(100) NOT NULL,
S_NAME varchar(100) NOT NULL,
S_ADDRESS varchar(100) NOT NULL,
S_CITY varchar(100) NOT NULL,
S_NATION varchar(100) NOT NULL,
S_REGION varchar(100) NOT NULL,
S_PHONE varchar(100) NOT NULL,
P_NAME varchar(100) NOT NULL,
P_MFGR varchar(100) NOT NULL,
P_CATEGORY varchar(100) NOT NULL,
P_BRAND varchar(100) NOT NULL,
P_COLOR varchar(100) NOT NULL,
P_TYPE varchar(100) NOT NULL,
P_SIZE tinyint(4) NOT NULL,
P_CONTAINER varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
PARTITION BY RANGE ( YEAR(LO_ORDERDATE) ) (
PARTITION p0 VALUES LESS THAN (1991),
PARTITION p1 VALUES LESS THAN (1992),
PARTITION p2 VALUES LESS THAN (1993),
PARTITION p3 VALUES LESS THAN (1994),
PARTITION p4 VALUES LESS THAN (1995),
PARTITION p5 VALUES LESS THAN (1996),
PARTITION p6 VALUES LESS THAN (1997),
PARTITION p7 VALUES LESS THAN (1998),
PARTITION p8 VALUES LESS THAN (1999),
PARTITION p9 VALUES LESS THAN (MAXVALUE)
)

多表关联聚合计算压测结果:


备注:TiFlash 开启 MPP功能,DorisDB和Doris分别配置并行度为(set parallel_fragment_exec_instance_num = 8;)

在该压测场景中TiFlash的性能优于Apache Doris;而DorisDB性能表现最佳。
五、总结
本次测试从架构角度出发不对产品好坏进行评价,目前没有大一统的数据库,每款主流的数据库都有其存在的理由和价值,根据场景选择适合或者适度超前的技术架构解决企业的痛点才是王道。最后引起玄姐的话:“一切脱离场景谈架构都是耍流氓”

5赞

好新的技术评测,顶起来! :+1:

在即将发布的TiDB 5.1 GA版本中,TiFlash支持分区表的功能,详情请关注Release Notes

1赞

有没有关于资源隔离,并发访问的测试

RoadMap 出现5.1了? 我还在苦等5.0.2

5.0.x 系列是真对 5.0 已有功能 + bug 修复,如果 5.0 已经包含你需要的功能,可以不用等 5.1。
而 5.1 将会加入新功能,所以 5.0.x 来说会更稳定。

非常感谢您的贡献,5.0 是 TiFlash MPP 的第一个版本,我们会努力把她做的更完善,包括性能和功能,请期待。