主頁 > 資料庫 > 干貨|開源OLAP引擎(ClickHouse、Doris、Presto、ByConity)性能對比分析

干貨|開源OLAP引擎(ClickHouse、Doris、Presto、ByConity)性能對比分析

2023-06-11 08:06:29 資料庫

隨著資料量和資料復雜性的不斷增加,越來越多的企業開始使用OLAP(聯機分析處理)引擎來處理大規模資料并提供即時分析結果,在選擇OLAP引擎時,性能是一個非常重要的因素,

 

因此,本文將使用TPC-DS基準測驗的99個查詢陳述句來對比開源的ClickHouse、Doris、Presto以及ByConity這4個OLAP引擎的性能表現,以便為企業選擇合適的OLAP引擎提供參考,

 

圖片

文|蘊博  來自ByConity開源團隊

 

 

圖片

TPC-DS(Transaction Processing Performance Council Decision Support Benchmark)是一個面向決策支持系統(Decision Support System,簡稱DSS)的基準測驗,該工具是由TPC組織開發,它模擬了多維分析和決策支持場景,并提供了99個查詢陳述句,用于評估資料庫系統在復雜的多維分析場景下的性能,每個查詢都設計用于模擬復雜的決策支持場景,包括跨多個表的連接、聚合和分組、子查詢等高級SQL技術,

 

圖片

ClickHouse、Doris、Presto和ByConity都是當前比較流行的開源OLAP引擎,它們都具有高性能和可擴展性的特點,

 

● ClickHouse是由俄羅斯搜索引擎公司Yandex開發的一個列式資料庫管理系統,它專注于大規模資料的快速查詢和分析,

● Doris是一個分布式列式存盤和分析系統,它支持實時查詢和分析,并可以與Hadoop、Spark和Flink等大資料技術進行集成,

● Presto是一個分布式SQL查詢引擎,它由Facebook開發,可以在大規模資料集上進行快速查詢和分析,

● ByConity是由位元組開源的云原生數倉,采用了存盤計算分離的架構,實作租戶資源隔離、彈性擴縮容,并具有資料讀寫的強一致性等特性,它支持主流的OLAP引擎優化技術,讀寫性能非常優異,

 

本文將使用這四個OLAP引擎對TPC-DS基準測驗的99個查詢陳述句進行性能測驗,并對比它們在不同型別的查詢中的性能差異,

 

圖片

測驗環境配置:

 

 

Clickhouse

Doris

Presto

ByConity

環境配置

Memory: 256GB

Disk: ATA, 7200rpm, partitioned:gpt

System: Linux 4.14.81.bm.30-amd64 x86_64, Debian GNU/Linux 9

 

測驗資料量

使用1TB的資料表,相當于28億行資料量級

軟體包版本

23.4.1.1943

1.2.4.1

0.28.0

0.1.0-GA

版本發布時間

2023-04-26

2023-04-27

2023-03-16

2023-03-15

節點數

5個Worker

5個BE,1個FE

5個Worker,1個Coordinator

5個Worker,1個Server

其他配置

distributed_product_mode = 'global', partial_merge_join_optimizations = 1

bucket配置:維表1,returns表10-20,sales表100-200

 

Hive Catalog,

ORC format,

Xmx200GB

enable_optimizer=1, dialect_type='ANSI'

 

服務器配置:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                48
On-line CPU(s) list:   0-47
Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 79
Model name:            Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
Stepping:              1
CPU MHz:               2494.435
CPU max MHz:           2900.0000
CPU min MHz:           1200.0000
BogoMIPS:              4389.83
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0-11,24-35
NUMA 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

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/ClickHouse-Doris-Presto-ByConity.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/554885.html

標籤:其他

上一篇:MySQL安裝

下一篇:返回列表

標籤雲
其他(160774) Python(38219) JavaScript(25492) Java(18216) C(15237) 區塊鏈(8270) C#(7972) AI(7469) 爪哇(7425) MySQL(7246) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4589) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2435) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1961) Web開發(1951) C++(1933) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 干貨|開源OLAP引擎(ClickHouse、Doris、Presto、ByConity)性能對比

    隨著資料量和資料復雜性的不斷增加,越來越多的企業開始使用OLAP(聯機分析處理)引擎來處理大規模資料并提供即時分析結果。在選擇OLAP引擎時,性能是一個非常重要的因素。



    因此,本文將使用TPC-DS基準測驗的99個查詢陳述句來對比開源的ClickHouse、Doris、Presto以及ByCon... ......

    uj5u.com 2023-06-11 08:06:29 more
  • MySQL安裝

    ## 一、MySQL在線方式安裝 1. 檢查自己的電腦是否已經安裝MySQL ```sh yum list installed | grep mysql ``` > (如果已經安裝,存在安裝記錄,通過下面命令洗掉 yum -y remove 版本名稱) 2. mysql官網下載mysql-commu ......

    uj5u.com 2023-06-11 08:06:10 more
  • 干貨|開源OLAP引擎(ClickHouse、Doris、Presto、ByConity)性能對比

    隨著資料量和資料復雜性的不斷增加,越來越多的企業開始使用OLAP(聯機分析處理)引擎來處理大規模資料并提供即時分析結果。在選擇OLAP引擎時,性能是一個非常重要的因素。



    因此,本文將使用TPC-DS基準測驗的99個查詢陳述句來對比開源的ClickHouse、Doris、Presto以及ByCon... ......

    uj5u.com 2023-06-11 08:04:49 more
  • PostgreSQL常用運維SQL

    一、資料庫連接 1、獲取資料庫實體連接數 select count(*) from pg_stat_activity; 2、獲取資料庫最大連接數 show max_connections 3、查詢當前連接數詳細資訊 select * from pg_stat_activity; 4、查詢資料庫中各個 ......

    uj5u.com 2023-06-11 08:04:26 more
  • 【技識訓累】Mysql中的SQL高級技巧【一】

    博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ......

    uj5u.com 2023-06-11 08:03:56 more
  • INFINI Labs 產品更新 | Easysearch 新增跨集群復制 (CCR)、支持

    ![](https://img2023.cnblogs.com/other/3200758/202306/3200758-20230610163529557-866000334.png) INFINI Labs 產品重量級更新!!!本次更新了很多亮點功能,如 Easysearch 新增跨集群復制 ( ......

    uj5u.com 2023-06-11 08:03:33 more
  • Kafka面試題

    # kafka 都有哪些特點? 高吞吐量,低延遲 可以熱擴展 并發度高 具有容錯性(掛的只剩1臺也能正常跑) 可靠性高 # 在哪些場景下會選擇 kafka? kafka的一些應用 - 日志收集:一個公司可以用kafka可以收集各種服務的log,通過kafka以統一介面服務的方式開放給各種consum ......

    uj5u.com 2023-06-11 08:03:23 more
  • MySQL安裝

    ## 一、MySQL在線方式安裝 1. 檢查自己的電腦是否已經安裝MySQL ```sh yum list installed | grep mysql ``` > (如果已經安裝,存在安裝記錄,通過下面命令洗掉 yum -y remove 版本名稱) 2. mysql官網下載mysql-commu ......

    uj5u.com 2023-06-11 08:03:15 more
  • 【后端面經-資料庫】MySQL的存盤引擎簡介

    [TOC](【后端面經-資料庫】MySQL的存盤引擎簡介) # MySQL的存盤引擎 mysql主要有四類存盤引擎,目前主要使用InnoDB作為存盤引擎。 ## 0. 存盤引擎的查看和修改 - 查看當前資料庫的默認存盤引擎 ```sql show variables like 'default_st ......

    uj5u.com 2023-06-10 08:45:09 more
  • 資料庫事務隔離級別

    標準隔離級別 讀未提交、讀已提交、可重復讀、串行化 串行化 對事務中所有讀寫的資料加上讀鎖、寫鎖、范圍鎖。所以沖突的事務必須同步執行。 //console1 start transaction ; select * from transaction_test where `key`=1; updat ......

    uj5u.com 2023-06-10 08:45:06 more