400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 FAQ
本次性能报告对比了 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 倍的数据规模测试有如下区别:
compresslevel=1
;开源版本 GPDB 因为不支持 quicklz 压缩格式,所以只采用的是 zstd 压缩,compresslevel=1
。compresslevel=1
。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 |
准备测试环境
gp_vmem_protect_limit
和 statement_mem
下载 TPC-H 基准测试工具
git clone https://github.com/ymatrix-data/TPC-H.git
注意!
YMatrix 的 TPC-H 工具已开源,简单易用,欢迎你的试用。
tpch.sh
脚本 配置数据库环境变量,指定数据库PORT,指定 DATABASE。
export PGPORT=5432
export PGDATABASE=tpch_s100
执行 tpch.sh
脚本,生成 tpch_variable.sh
配置文件,-d
参数可以选择数据库类型,比如 matrixdb
,greenplum
, postgresql
;-s
参数可以指定数据规模。
./tpch.sh -d matrixdb -s 100
完成配置文件修改之后,一键执行 tpch.sh
,该脚本会自动生成数据、创建表、加载数据及执行 TPC-H 所有查询,并生成查询执行的时间。
./tpch.sh
注意!
tpch.sh
脚本执行数据加载的时候,对 YMatrix 采用的是基于 MatrixGate 工具的加载方式,对 GPDB 采用的是基于 gpfdist 工具的加载方式。
你可通过定制 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 |