YMatrix 与 Greenplum TPC-H 基准对比测试报告

测试概况


本次性能报告对比了 YMatrix 和 Greenplum (简称 GPDB) 在 TPC-H 分析型查询场景下的性能表现。测试结果显示,YMatrix 在 100 和 1000 两种数据规模下的表现远远优于 GPDB,分别提升了 13 倍和 12 倍。

TPC-H 是一个决策支持基准测试,包含一组业务导向的即席查询和并发数据修改。所选查询和数据库中的数据具有广泛的行业适用性。这个基准测试展示了决策支持系统的能力,可以检查大量数据、执行高度复杂的查询,并回答关键的业务问题,同时反映了数据库系统处理查询的多方面能力。

测试环境


硬件环境

数据规模 机器 vCPU RAM 带宽 EBS
100 AWS EC2,m5.8xlarge 32 128GB 10Gbps gp3,iops = 3000,thoughtput = 125MB/s
1000 AWS EC2,m5.8xlarge 32 128GB 10Gbps io1,iops = 64000

软件环境

YMatrix 的 TPC-H 基准测试采用单机部署,并采用目前 YMatrix 产品自动选择的默认部署方式,在前文介绍的硬件环境下是 6 个 Segment 节点。

  • 操作系统内核:3.10.0-1160.66.1.el7.x86_64

  • 操作系统版本:CentOS Linux release 7.9.2009

  • YMatrix:企业版 matrixdb5-5.0.0+enterprise_5.0.0,其中 YMatrix 集群部署参见 YMatrix 官网文档YMatrix 的 TPC-H 基准测试工具

  • Greenplum:open-source-greenplum-db-6.23.3-rhel7-x86_64

测试方案


分别在 100 倍和 1000 倍数据规模下进行 YMatrix 和 GPDB 的测试,YMatrix 和 GPDB 都配置为 6 个 Segment,所有测试结果均由 YMatrix 工程师采用同等机器配置实测得到。

100 倍和 1000 倍的数据规模测试有如下区别:

  • 因为 100 倍规模的数据在 128GB 内存的配置下能全部缓存,所以 100 倍测试使用了 gp3 类型的磁盘,并且 YMatrix 同时测试了 lz4 和 zstd 压缩格式,zstd 的 compresslevel=1;开源版本 GPDB 因为不支持 quicklz 压缩格式,所以只采用的是 zstd 压缩,compresslevel=1
  • 1000 倍数据规模下,使用的是性能更好的 io1 类型的磁盘,并且 YMatrix 和 GPDB 均采用了 zstd 压缩,compresslevel=1
  • 本文测试中 100 倍数据规模下 statement_mem=1GB,1000 倍数据规模下 statement_mem=2GB

测试数据


TPC-H 100 倍规模数据:

table Records YMatrix(lz4) YMatrix(zstd) GPDB(zstd)
nation 25 5 MB 5 MB 1 MB
region 5 4 MB 4 MB 1 MB
part 20,000,000 1 GB 690 MB 592 MB
partsupp 80,000,000 4 GB 3 GB 3 GB
supplier 1,000,000 97 MB 70 MB 55 MB
customer 15,000,000 1 GB 969 MB 861 MB
orders 150,000,000 7 GB 5 GB 4 GB
lineitem 600,037,902 34 GB 19 GB 18 GB

TPC-H 1000 倍规模数据:

table Records YMatrix(zstd) GPDB(zstd)
nation 25 5 MB 1 MB
region 5 4 MB 1 MB
part 200,000,000 5 GB 5 GB
partsupp 800,000,000 29 GB 31 GB
supplier 10,000,000 616 MB 538 MB
customer 150,000,000 8 GB 8 GB
orders 1,500,000,000 46 GB 46 GB
lineitem 5,999,989,709 185 GB 184 GB

测试步骤


  1. 准备测试环境

  2. 下载 TPC-H 基准测试工具

    git clone https://github.com/ymatrix-data/TPC-H.git

    注意!
    YMatrix 的 TPC-H 工具已开源,简单易用,欢迎你的试用。

  3. 执行 tpch.sh 脚本

  • 配置数据库环境变量,指定数据库PORT,指定 DATABASE。

     export PGPORT=5432
     export PGDATABASE=tpch_s100
  • 执行 tpch.sh 脚本,生成 tpch_variable.sh 配置文件,-d 参数可以选择数据库类型,比如 matrixdbgreenplumpostgresql-s 参数可以指定数据规模。

     ./tpch.sh -d matrixdb -s 100
  • 完成配置文件修改之后,一键执行 tpch.sh,该脚本会自动生成数据、创建表、加载数据及执行 TPC-H 所有查询,并生成查询执行的时间。

     ./tpch.sh

注意!
tpch.sh 脚本执行数据加载的时候,对 YMatrix 采用的是基于 MatrixGate 工具的加载方式,对 GPDB 采用的是基于 gpfdist 工具的加载方式。

  1. TPC-H 基准测试工具重要参数说明

你可通过定制 tpch_variable.sh 配置文件来实现自己的特定需求:

  • 配置 RUN_GEN_DATA="true",表示生成数据。
  • 配置 RUN_DDL="true", 表示创建表和索引。
  • 配置 RUN_LOAD="true",表示加载数据。
  • 配置 RUN_SQL="true",表示执行 TPC-H 所有查询。
  • 配置 PREHEATING_DATA="true",表示需要预热轮次对数据文件进行缓存。
  • 配置 SINGLE_USER_ITERATIONS="2",如果上述配置项PREHEATING_DATA="true", 则表示 TPC-H 查询会执行 3 次, 其中有一次预热的结果,排除预热结果,取后两次结果中的最小值。

示例

如果重复执行 TPC-H 查询,则只需修改 tpch_variable.sh 配置文件的以下配置项:

`RUN_COMPILE_TPCH="false"`
`RUN_GEN_DATA="false"`
`RUN_INIT="false"`
`RUN_LOAD="false"`
`RUN_SQL="true"`
`RUN_SINGLE_USER_REPORT="true"`

然后再次执行 tpch.sh 即可。

测试结论


分别对 YMatrix 和 GPDB 进行了多组测试,采用各自最好的成绩进行性能对比。

YMatrix 的 TPC-H 100 的性能数据采用的是 lz4 的压缩格式,GPDB 的 TPC-H 100 的性能数据采用的是 zstd 压缩,compresslevel=1,因为开源的 GPDB 不支持 quicklz 压缩格式,所以目前只能采用 zstd 压缩来进行对比; YMatrix 和 GPDB 的 TPC-H 1000 性能数据都是采用的 zstd 压缩,compresslevel=1

从性能对比来看,YMatrix 的性能远远好于 GPDB,TPC-H 100 和 1000 都比 GPDB 快了 10 倍以上。

数据规模 GPDB(ms) YMatrix(ms) 提升比例
100 930,071 70,044 1300%
1000 15,273,254 1,265,478 1200%

下面是详细的测试结果,YMatrix TPC-H 100 分别在 lz4 和 zstd 两种压缩格式下进行了测试,其中 lz4 的性能更好,因为本轮测试中采用的服务器内存足够大,能够缓存所有的数据文件,所以采用压缩率更低,但是解压性能更好的 lz4 压缩格式能获得更好的性能。

GPDB 在打开 orca 和关闭 orca 的场景下进行了测试,发现打开 orca 在 TPC-H 100 的场景下性能反而会更差,TPC-H 1000 的场景下 orca 的表现会更好。 另外 YMatrix 的测试均是在关闭 orca 的场景下进行的。

(ms) YMatrix TPC-H 100 planner lz4 YMatrix TPC-H 100 planner zstd GPDB TPC-H 100 orca zstd GPDB TPC-H 100 planner zstd YMatrix TPC-H 1000 planner zstd GPDB TPC-H 1000 orca zstd GPDB TPC-H 1000 planner zstd
Q01 4,200 4,846 94,271 90,473 53,291 929,166 907,474
Q02 1,228 1,417 13,134 11,005 12,960 163,967 132,898
Q03 4,409 4,860 31,654 32,057 50,194 406,933 456,339
Q04 4,965 4,947 40,743 30,522 103,699 492,440 429,417
Q05 4,405 5,226 43,100 40,094 88,930 787,161 569,668
Q06 183 254 4,066 3,995 2,852 40,141 38,985
Q07 1,865 2,219 29,294 28,879 29,921 340,402 402,481
Q08 2,239 3,123 51,852 49,998 41,305 610,720 650,542
Q09 7,012 8,229 84,506 91,597 248,033 1,072,529 1,719,890
Q10 3,861 4,469 61,953 28,238 64,568 810,094 395,927
Q11 470 569 5,937 10,010 6,475 54,006 97,012
Q12 2,319 2,486 27,271 30,032 26,964 326,579 335,811
Q13 4,610 4,458 34,345 26,018 72,861 631,285 651,340
Q14 588 696 5,591 3,318 7,277 48,476 47,320
Q15 1,310 1,249 9,579 12,001 31,236 93,387 172,448
Q16 1,471 1,584 8,493 22,038 25,295 141,958 492,614
Q17 1,613 1,960 154,488 143,057 28,158 3,299,179 3,272,970
Q18 7,225 6,950 78,451 89,587 93,391 1,064,011 1,276,977
Q19 3,225 4,173 22,224 21,027 40,080 217,796 208,500
Q20 850 1,004 24,920 24,818 9,596 293,892 421,818
Q21 10,219 10,529 149,483 128,112 205,788 2,427,732 2,420,413
Q22 1,777 1,858 19,866 13,196 22,603 226,963 172,399
SUM 70,044 77,107 995,221 930,071 1,265,478 14,478,829 15,273,254