【是否原创】是
【首发渠道】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,数据条数如下:
表的信息: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性能表现最佳。
五、总结
本次测试从架构角度出发不对产品好坏进行评价,目前没有大一统的数据库,每款主流的数据库都有其存在的理由和价值,根据场景选择适合或者适度超前的技术架构解决企业的痛点才是王道。最后引起玄姐的话:“一切脱离场景谈架构都是耍流氓”