HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:5722927

评论

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

福昕软件:用PDF辅助技术弥合阅读障碍者的数字鸿沟

联营汇聚

千人千面工作台,轻松定制你的移动业务场景

WorkPlus

Java并发机制的底层实现原理

急需上岸的小谢

5月月更

超级全面的设计类网址导航

小炮

面试中被问到最多的 19 个 JavaScript 问题

海拥(haiyong.site)

JavaScript 5月月更

[Day38]-[二叉树]-二叉树的右视图

方勇(gopher)

LeetCode 二叉树 数据结构算法

数据大屏,仅仅是数据展示吗?

葡萄城技术团队

数据分析 BI 数据可视化 数据大屏 BI分析

python处理excel文件,python xlsxwriter 一文初掌握

梦想橡皮擦

5月月更

火山引擎推出基于全新视角的 Web 端性能监控方案

字节跳动终端技术

字节跳动 Web 性能监控 火山引擎

轻量迅捷时代,Vite 与Webpack 谁赢谁输

葡萄城技术团队

前端 vite webpack 轮子

【刷题第一天】蜡烛之间的盘子

白日梦

5月月更

导航网站合集 | 你想要的资源它都有

小炮

养殖场新来了个“AI管家”

华为云开发者联盟

hilens ModelArts Pro 养殖场 AI摄像头 天视通

官宣|Apache Flink 1.15 发布公告

Apache Flink

大数据 flink 编程 流计算 实时计算

STM32+华为云IOT设计的动态密码锁

DS小龙哥

5月月更

【高并发】ThreadLocal学会了这些,你也能和面试官扯皮了!

冰河

并发编程 多线程 协程 异步编程 精通高并发系列

Docker下的Spring Cloud三部曲之二:细说Spring Cloud开发

程序员欣宸

Java spring-cloud 5月月更

web前端培训项目的 Vite 迁移实践分析

@零度

前端开发 vite

面试突击45:为什么要用读写锁?它有什么优点?

王磊

Java 面试

BI系统打包Docker镜像及容器化部署的具体实现

葡萄城技术团队

Docker 数据分析 BI BI 分析工具

ChunJun支持异构数据源DDL转换与自动执行 丨DTMO 02期回顾(内含课程回放+课件)

袋鼠云数栈

大数据

OceanBase 源码解读(十):一号表及其服务寻址

OceanBase 数据库

oceanbase 源码解读

Java 基础语法

源字节1号

软件开发 前端开发 Java后端 小程序开发

如何将知识管理应用到工作中,解决企业的问题?

小炮

限时免费!六位袋鼠云数栈资深产品专家带来《数智赋能实战六讲》,欢迎报名

袋鼠云数栈

数据中台 大数据 开源

IDC Panel:智能运维在金融行业中的场景化应用

BizSeer必示科技

安全领导力| GitLab 持续位列 Gartner AST 魔力象限

极狐GitLab

安全

一文带你了解 「图数据库」Nebula 的存储设计和思考

NebulaGraph

数据存储 图数据库

CRMEB Java.小程序交易组件操作使用教程

CRMEB

五年谷歌ML Infra生涯,我学到最重要的3个教训

OneFlow

机器学习 深度学习 深度学习框架 MLOps Data Infra

七、高可用之故障演练

穿过生命散发芬芳

故障演练 5月月更 高可用设计

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