比 ClickHouse 再快 24% ! YMatrix 5.0 SSB 基准测试报告

2022-11-03 · YMatrix Team
#性能测试#产品动态

近日,YMatrix 5.0 正式发布,通过 138 项优化,实现了性能的全方位突破。其中针对单表查询分析性能,我们进行了 SSB 基准测试,对标大宽表性能标杆 ClickHouse。结果显示:YMatrix 在两种测试数据规模下,分别比 CK 提升了 24% 及 37%。

详细的测试报告如下:

01 测试结论

Star Schema Benchmark(以下简称 SSB)是目前业界普遍采用的一个星型测试集(注1),它是从 TPC-H (注2)演化出来的一种针对分析场景的“性价比”评价标准。在 SSB 基准测试中定义了 13 个查询场景,从不同角度和维度,考察了一个分析型数据库的综合性能。

随着社区发展,SSB 最初的设计并不完全适用于今天大部分数仓的使用模式。Apache Druid 在最近的一次基准测试中(注3),基于原始版本提出了一种 SSB 变体,即:将多张原始表数据先做一次聚合转化为一张宽表,然后基于这张宽表来执行 SSB 基准测试中的各测试项。在 ClickHouse 发布的最新 SSB 基准测试结果中,同样采用了这种方案。(注4)

此次 YMatrix 5.0 采用了与 ClickHouse 一致的 SSB 基准测试模型,分别测试了 100倍和 1000倍数据规模(SSB的数据规模来源于 TPC-H 的 scale factor)。其中 100倍数据的宽表数据量约为 6亿条数据,1000 倍数据的宽表数据量约为 60亿。测试结果中,100 倍数据规模下 ClickHouse 的测试结果引用了 ClickHouse 官方数据,而官方并未公开 1000 倍数据规模下的结果,因此 1000 倍的结果由 YMatrix 工程师采用同等机器配置实测得到。

最终完整的测试结果如下:

02 测试环境

硬件环境

软件环境

为了最大程度上还原 ClickHouse 最新的测试结果,YMatrix 5.0 的 SSB 基准测试采用和 ClickHouse 同等的测试环境和场景(注6),即单机部署,并采用目前 YMatrix 产品自动选择的默认部署方式,在前文介绍的硬件环境下是 6 个 Segment 节点。

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

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

  • YMatrix:企业版 matrixdb-5.0.0.beta.2+enterprise-1,其中 YMatrix 集群部署参见见 YMatrix 官网文档 (注7)和 YMatrix 的 SSB 基准测试工具(注8)。

  • ClickHouse:22.7.2.15

03 测试步骤

1. 准备测试环境

如上文“硬件环境”一节,初始化 AWS 上的虚拟机环境。并按照 YMatrix 官网文档(注9)安装测试集群。

2. 下载 SSB 基准测试工具

git clone https://github.com/ymatrix-data/ssb.git

3. 环境检查

./validate_environment.sh

4.生成测试数据

通过 -s 100,来生成100倍规模的数据。

./generate_data.sh -s 100

5. 导入测试数据

工具支持测试多种数据规模的数据集,通过 -s 100 选择将生成好的100倍数据集导入YMatrix,默认的导入方式为 MatrixGate (注10),目前支持 MatrixGate 和 COPY 两种模式,如果需要调整导入方式可以通过 -t 来指定。

./import_data.sh -s 100

6.生成宽表数据

YMatrix 对 SSB基准中的表结构和查询做出以下调整:

  • ENUM字段:ClickHouse的基准测试中使用了3个ENUM列 C_REGION, S_REGION, P_MFGR,而 YMatrix 的基准测试中采用了5个 enum 列 c_region, s_region, p_mfgr, c_nation, s_nation

  • 排序字段:ClickHouse SSB 基准中主键索引使用了6个列 S_REGION, C_REGION, P_MFGR, S_NATION, C_NATION, P_CATEGORY,并且还有额外的8个排序键 S_REGION, C_REGION, P_MFGR, S_NATION, C_NATION, P_CATEGORY, LO_CUSTKEY, LO_SUPPKEY;在YMatrix的基准测试中没有区分这二者的关系,YMatrix 的基准测试中采用了 7 个排序键:s_region, c_region, p_mfgr, s_nation, c_nation, p_category, lo_orderdate。

./generate_flat_table.sh -s 100

7. 执行 SSB 基准测试

./ssb.sh -s 100

04 附录

100 倍数据:YMatrix vs. ClickHouse 结果:

1000 倍数据:YMatrix vs. ClickHouse 结果:

注1:
详见:https://www.cs.umb.edu/~poneil/StarSchemaB.PDF

注2: 参见:https://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_v3.0.1.pdf

注3:

详见:https://go.imply.io/rs/910-OTN-223/images/Apache-Druid-and-Google-BigQuery-performance-evaluation.pdf

注4: 参见:https://altinity.com/blog/clickhouse-nails-cost-efficiency-challenge-against-druid-rockset

注5: 参见:https://aws.amazon.com/ec2/instance-types/m5/

注6: 参见:https://altinity.com/blog/clickhouse-nails-cost-efficiency-challenge-against-druid-rockset

注7: 参见:https://ymatrix.cn/doc/5.0/install/mx5_cluster/mx5_cluster

注8: 参见:https://github.com/ymatrix-data/ssb

注9: 参见:https://ymatrix.cn/doc/5.0/install/mx5_cluster/mx5_cluster

注10: 参见:https://ymatrix.cn/doc/5.0/datainput/matrixgate