文档目录

TiDB TPC-H 性能对比测试报告 - v5.2 MPP 模式对比 Greenplum 6.15.0 以及 Apache Spark 3.1.1

测试概况

本次测试对比了 TiDB v5.2 MPP 模式下和主流分析引擎例如 Greenplum 和 Apache Spark 最新版在 TPC-H 100 下的性能表现。结果显示,TiDB v5.2 MPP 模式下相对这些方案有 2-3 倍的性能提升。

TiDB v5.0 中引入的 TiFlash 组件的 MPP 模式,在 v5.1 和 v5.2 中进行了功能优化,这大大幅增强了 TiDB HTAP 形态。本文的测试对象如下:

  • TiDB v5.2 MPP 执行模式下的列式存储
  • Greenplum 6.15.0
  • Apache Spark 3.1.1 + Parquet

测试环境

硬件配置

  • 节点数量:3
  • CPU:Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz,40 核
  • 内存:189 GB
  • 磁盘:NVMe 3TB * 2

软件版本

服务类型软件版本
TiDB5.2
Greenplum6.15.0
Apache Spark3.1.1

配置参数

TiDB v5.2 配置

v5.2 的 TiDB 集群除以下配置项外均使用默认参数配置。所有 TPC-H 测试表均以 TiFlash 列存进行同步,无额外分区和索引。

在 TiFlash 的 users.toml 配置文件中进行如下配置:

[profiles.default]
max_memory_usage = 10000000000000

使用 SQL 语句设置以下会话变量:

set @@tidb_isolation_read_engines='tiflash';
set @@tidb_allow_mpp=1;
set @@tidb_mem_quota_query = 10 << 30;

Greenplum 配置

Greenplum 集群使用额外的一台 Master 节点部署(共四台),每台 Segment Server 部署 8 Segments(每个 NVMe SSD 各 4 个),总共 24 Segments。存储格式为 append-only / 列式存储,分区键为主键。

log_statement = all
gp_autostats_mode = none
statement_mem = 2048MB
gp_vmem_protect_limit = 16384

Apache Spark 配置

Apache Spark 测试使用 Apache Parquet 作为存储格式,数据存储在 HDFS 上。HDFS 为三节点,为每个节点指定两块 NVMe SSD 盘作为数据盘。通过 Standalone 方式启动 Spark 集群,使用 NVMe SSD 盘作为 spark.local.dir 本地目录以借助快速盘加速 Shuffle Spill 过程,无额外分区和索引。

--driver-memory 20G
--total-executor-cores 120
--executor-cores 5
--executor-memory 15G

测试结果

注意:

以下测试结果均为 3 次测试的平均值,单位均为秒。

Query IDTiDB v5.2Greenplum 6.15.0Apache Spark 3.1.1 + Parquet
18.0864.130752.64
22.534.7661211.83
34.8415.6289813.39
410.9412.883188.54
512.2723.3544925.23
61.326.0332.21
75.9112.3126625.45
86.7111.8244423.12
944.1922.4014435.2
107.1312.5107112.18
112.182.622110.99
122.887.979066.99
136.8410.1587312.26
141.694.793943.89
153.2910.487859.82
165.044.642626.76
1711.774.6524344.65
1812.8764.8764630.27
194.758.086254.7
208.8915.470168.4
2124.4439.0859434.83
221.237.674764.59

TPC-H

以上性能图中蓝色为 TiDB v5.2,红色为 Greenplum 6.15.0,黄色为 Apache Spark 3.1.1,纵坐标是查询的处理时间。纵坐标数值越低,表示 TPC-H 性能越好。