阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

ByConity 与主流开源 OLAP 引擎(Clickhouse、Doris、Presto)性能对比分析

  • 2023-06-06
    北京
  • 本文字数:3378 字

    阅读完需:约 11 分钟

ByConity与主流开源OLAP引擎(Clickhouse、Doris、Presto)性能对比分析

随着数据量和数据复杂性的不断增加,越来越多的企业开始使用 OLAP(联机分析处理)引擎来处理大规模数据并提供即时分析结果。在选择 OLAP 引擎时,性能是一个非常重要的因素。因此,本文将使用 TPC-DS 基准测试的 99 个查询语句来对比开源的 ClickHouse、Doris、Presto 以及 ByConity 这 4 个 OLAP 引擎的性能表现,以便为企业选择合适的 OLAP 引擎提供参考。

TPC-DS 基准测试简介


TPC-DS(Transaction Processing Performance Council Decision Support Benchmark)是一个面向决策支持系统(Decision Support System,简称 DSS)的基准测试,该工具是由 TPC 组织开发,它模拟了多维分析和决策支持场景,并提供了 99 个查询语句,用于评估数据库系统在复杂的多维分析场景下的性能。每个查询都设计用于模拟复杂的决策支持场景,包括跨多个表的连接、聚合和分组、子查询等高级 SQL 技术。

OLAP 引擎介绍


ClickHouse、Doris、Presto 和 ByConity 都是当前比较流行的开源 OLAP 引擎,它们都具有高性能和可扩展性的特点。


  • ClickHouse 是由俄罗斯搜索引擎公司 Yandex 开发的一个列式数据库管理系统,它专注于大规模数据的快速查询和分析。

  • Doris 是一个分布式列式存储和分析系统,它支持实时查询和分析,并可以与 Hadoop、Spark 和 Flink 等大数据技术进行集成。

  • Presto 是一个分布式 SQL 查询引擎,它由 Facebook 开发,可以在大规模数据集上进行快速查询和分析。

  • ByConity 是由字节开源的云原生数仓,采用了存储计算分离的架构,实现租户资源隔离、弹性扩缩容,并具有数据读写的强一致性等特性,它支持主流的 OLAP 引擎优化技术,读写性能非常优异。


本文将使用这四个 OLAP 引擎对 TPC-DS 基准测试的 99 个查询语句进行性能测试,并对比它们在不同类型的查询中的性能差异。

测试环境和方法

测试环境配置:


服务器配置:


Architecture:          x86_64CPU op-mode(s):        32-bit, 64-bitByte Order:            Little EndianCPU(s):                48On-line CPU(s) list:   0-47Thread(s) per core:    2Core(s) per socket:    12Socket(s):             2NUMA node(s):          2Vendor ID:             GenuineIntelCPU family:            6Model:                 79Model name:            Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHzStepping:              1CPU MHz:               2494.435CPU max MHz:           2900.0000CPU min MHz:           1200.0000BogoMIPS:              4389.83Virtualization:        VT-xL1d cache:             32KL1i cache:             32KL2 cache:              256KL3 cache:              30720KNUMA node0 CPU(s):     0-11,24-35NUMA node1 CPU(s):     12-23,36-47
复制代码

测试方法:


  • 使用 TPC-DS 基准测试的 99 个查询语句,和 1TB(28 亿行)的数据测试 4 个 OLAP 引擎的性能。

  • 在每个引擎中使用相同的测试数据集,并保持相同的配置和硬件环境。

  • 对于每个查询,多次执行并取平均值,以减少测量误差,设置每次查询超时时间为 500 秒。

  • 记录查询执行的细节,例如查询执行计划、I/O 和 CPU 使用情况等。

性能测试结果


我们使用了相同的数据集和硬件环境来测试这四个 OLAP 引擎的性能。测试数据集大小为 1TB,硬件和软件环境如上介绍,我们使用了 TPC-DS 基准测试中的 99 个查询语句分别在四个 OLAP 引擎上进行了连续三次的测试,并取三次平均结果。其中 ByConity 跑通了所有 99 个查询测试。Doris 在 SQL15 出现 Crash,另外有 4 次的 Timeout,分别是 SQL54、SQL67、SQL78 和 SQL95。Presto 只在 SQL67 和 SQL72 发生 Timeout,其他查询测试都跑通了。而 Clickhouse 只跑通了 50% 的查询语句,大概有一部分是 Timeout,另一部分是系统报错,分析原因是 Clickhouse 不能有效的支持多表关联查询导致,只能把这类 SQL 语句做手动改写拆分才能执行。因此在对比总耗时我们暂时排除 Clickhouse,其他三个 OLAP 引擎 TPC-DS 测试总耗时如下图 1 所示,从图 1 中我们可以看出开源的 ByConity 查询性能明显优于其他引擎,性能约是其他的 3-4 倍。(注:以下所有图表纵坐标单位为秒)


图 1 TPC-DS 99 条查询总耗时


针对 TPC-DS 基准测试的 99 个查询语句,我们接下来按照查询场景的不同进行分类,例如基础查询、连接查询、聚合查询、子查询、窗口函数查询等。下面我们将使用这些分类方式来对 ClickHouse、Doris、Presto 和 ByConity 四个 OLAP 引擎进行性能分析对比:

基础查询场景下


该场景包含简单的查询操作,例如从单个表中查询数据,过滤和排序结果等。基础查询的性能测试主要关注处理单个查询的能力。其中 ByConity 的表现最佳,Presto 和 Doris 的性能也表现都不错,这是因为基础查询通常只涉及到少量的数据表和字段,因此能够充分利用 Presto 和 Doris 的分布式查询特性和内存计算能力,Clickhouse 对多表关联支持不好,出现一些跑不通的现象,其中 SQL5、8、11、13、14、17、18 均超时,我们按 Timeout=500 秒计算,但希望显示更清晰截取 Timeout=350 秒。下图 2 是基础查询场景下四个引擎的平均查询时间:


图 2 TPC-DS 基础查询的性能对比

连接查询场景


连接查询是常见的多表查询场景,它通常使用 JOIN 语句连接多个表,并根据指定条件进行数据检索。如图 3 我们看到 ByConity 的性能最佳,主要得益于对查询优化器的优化,引入了基于代价的优化能力(CBO),在多表 Join 时候进行 re-order 的等优化操作。其次是 Presto 和 Doris,Clickhouse 在多表 Join 的效果相比其他三个性能不是很好,且对很多复杂语句的支持不够好。


图 3 TPC-DS 连接查询的性能对比

聚合查询场景


聚合查询是对数据进行统计计算的场景,例如测试 SUM、AVG、COUNT 等聚合函数的使用。ByConity 依然表现优异,其次是 Doris 和 Presto,Clickhouse 出现了四次 Timeout,为了方便看出差异,我们截取 Timeout 值到 250 秒。


图 4 TPC-DS 聚合查询的性能对比

子查询场景


子查询是在 SQL 语句中嵌套使用的查询场景,它通常作为主查询的条件或限制条件。如下图 5 所示,ByConity 表现最佳,原因是 ByConity 实现了基于规则的优化能力(RBO)进行查询优化,通过算子下推、列裁剪和分区裁剪等技术,把复杂的嵌套查询进行整体优化,替除所有的子查询,把常见算子转化成 Join+Agg 的形式。其次是 Doris 和 Presto 表现相对较好,但 Presto 在 SQL68 和 SQL73 出现 Timeout,Doris 也在 3 个 SQL 查询出现 Timeout,Clickhouse 同样出现了部分超时和系统报错,原因上面有提到。同样为方便看出差异,我们截取 Timeout 值等于 250 秒。


图 5 TPC-DS 子查询的性能对比

窗口函数查询场景


窗口函数查询是一种高级的 SQL 查询场景,它可以在查询结果中进行排名、分组、排序等操作。如下图 6 所示,ByConity 的性能最优,其次是 Presto,Doris 出现了一次 Timeout 的情况,Clickhouse 依然有部分没有跑通 TPC-DS 测试。


图 6 TPC-DS 窗口函数查询的性能对比

总结


本文对 ClickHouse、Doris、Presto 和 ByConity 四个 OLAP 引擎在 TPC-DS 基准测试的 99 个查询语句下的性能进行了分析和比较。我们发现,在不同的查询场景下,四个引擎的性能表现存在差异。ByConity 在所有 TPC-DS 的 99 个查询场景下都表现优异,超过其他三个 OLAP 引擎;Presto 和 Doris 在连接查询、聚合查询和窗口函数查询场景下表现较好;由于 Clickhouse 的设计和实现并不是专门针对关联查询进行优化,因此在多表关联查询方面整体表现差强人意。


需要注意的是,性能测试结果取决于多个因素,包括数据结构、查询类型、数据模型等。在实际应用中,需要综合考虑各种因素,以选择最适合自己的 OLAP 引擎。在选择 OLAP 引擎时,还需要考虑其他因素,如可扩展性、易用性、稳定性等。在实际应用中,需要根据具体业务需求进行选择,并对引擎进行合理的配置和优化,以获得最佳的性能表现。


总之,ClickHouse、Doris、Presto、ByConity 都是非常优秀的 OLAP 引擎,具有不同的优点和适用场景。在实际应用中,需要根据具体业务需求进行选择,并进行合理的配置和优化,以获得最佳的性能表现。同时,需要注意选择具有代表性的查询场景和数据集,并针对不同的查询场景进行测试和分析,以便更全面地评估引擎的性能。


延伸阅读:

谈谈ByConity存储计算分离架构和优势

字节跳动开源ByConity:基于ClickHouse的存算分离架构云原生数仓


2023-06-06 09:5735802

评论

发布
暂无评论
发现更多内容

专家观点∣基于数据驱动的设备预测性维护

用友BIP

数据驱动 设备维护

末流院校24届秋招逆袭之路!

王磊

Java java面试

简单好用的防火墙 Radio Silence for mac激活最新

胖墩儿不胖y

Mac 软件 防火墙软件 阻止网络连接软件

行云管家云管平台四大价值看这里!

行云管家

企业上云 云管平台 云资源 云管理

智能客服的新方向

百度开发者中心

智能客服 #人工智能 千帆大模型平台

实时数仓混沌演练实践

得物技术

实时数仓 混沌演练 业务混沌 数仓稳定性

鞍钢集团∣共和国钢铁工业长子的财务转型之路

用友BIP

财务数智化

平台运营,让数智底座更安全更稳定更高效

用友BIP

数智底座 2023全球商业创新大会

HTTP代理IP在什么情况下会请求超时?

巨量HTTP

代理IP http代理

创新传媒行业的未来发展

百度开发者中心

#人工智能 生成式AI 千帆大模型平台

DHorse v1.4.0 发布,基于 k8s 的发布平台

tiandizhiguai

DevOps k8s kubernetes 运维

灵魂三问之稳定性摸排

阿里技术

方法论 稳定性 底盘

苹果电脑效率提升:Alfred 5 for Mac直装版 附Alfred5汉化包 支持M1

南屿

Alfred 5 Mac Alfred 5破解版 Mac效率办公软件

好物周刊#1:提示工程师养成指南

村雨遥

软件 网站 项目 插件 资料

不断进化的e签宝,电子签普惠的新答案

ToB行业头条

支持国密浏览器的堡垒机叫什么?联系电话多少?

行云管家

网络安全 堡垒机 国密 国密浏览器 国密算法

AI 编码助手 Codewhisperer 安装步骤和使用初体验

亚马逊云科技 (Amazon Web Services)

Java Python 人工智能 机器学习

数据库顶会 VLDB 2023 论文解读 - Krypton: 字节跳动实时服务分析 SQL 引擎设计

字节跳动云原生计算

sql 大数据 云原生

ARBT阿尔比特代币合约质押挖矿系统开发

l8l259l3365

权威认证!用友再获全球企业级应用软件市场10强

用友BIP

企业级应用软件

覆盖8大领域,云投集团财务数智化管理平台全面上线!

用友BIP

财务数智化

Studio One 6 Pro永久许可证 附Studio One for Mac安装教程

南屿

Studio One 许可证 音乐制作软件 Studio One 6下载 Studio One 6破解

Appilot发布:打造面向DevOps场景的开源AI助手

SEAL安全

AI DevOps 企业号9月PK榜 Appilot

即时通讯技术文集(第21期):后端架构设计基础入门系列 [共15篇]

JackJiang

网络编程 即时通讯 即时通讯IM

美国站群服务器和香港站群服务器,哪一个更适合你的在线业务?

一只扑棱蛾子

站群服务器

ByConity与主流开源OLAP引擎(Clickhouse、Doris、Presto)性能对比分析_语言 & 开发_王蕴博@ByConity布道师_InfoQ精选文章