日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自研云原生数据仓库AnalyticDB再破权威评测TPC-DS世界纪录!

發(fā)布時(shí)間:2024/9/3 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自研云原生数据仓库AnalyticDB再破权威评测TPC-DS世界纪录! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

北京時(shí)間 2020/5/4 青年節(jié),TPC(全球最知名非盈利的數(shù)據(jù)管理系統(tǒng)評(píng)測基準(zhǔn)標(biāo)準(zhǔn)化組織)官網(wǎng)正式上線AnalyticDB TPC-DS成績,AnalyticDB通過嚴(yán)苛的TPC-DS全流程測試,性能QphDS分?jǐn)?shù)為14895566,性價(jià)比分?jǐn)?shù)為0.08CNY,相比較基于Spark深度優(yōu)化版的前世界紀(jì)錄性能提升29%并且單位成本僅為其1/3,成為TPC-DS官方榜單上全球性能、性價(jià)比雙雙領(lǐng)先的數(shù)據(jù)倉庫,這是繼2019/4/26之后再次獲得全球領(lǐng)先的成績!榜單截圖如下,詳細(xì)榜單請(qǐng)參見:TPC-DS Results


隨著云時(shí)代全面到來,企業(yè)數(shù)據(jù)需求不斷變化,從傳統(tǒng)的Big Data逐漸向Fast Data演進(jìn),主要表現(xiàn)在如下4個(gè)方面(部分?jǐn)?shù)據(jù)參考Gartner、IDC):

? 數(shù)據(jù)規(guī)模爆炸性增長,到2020年全球數(shù)據(jù)預(yù)計(jì)會(huì)到40ZB,而到2025年還會(huì)繼續(xù)增長4倍以上。

? 企業(yè)上云速度明顯加快,預(yù)計(jì)到2025年企業(yè)50%的數(shù)據(jù)都是云存儲(chǔ),而企業(yè)75%的數(shù)據(jù)庫都運(yùn)行在云上。

? 數(shù)據(jù)的實(shí)時(shí)化需求強(qiáng)烈,預(yù)計(jì)2025年全球數(shù)據(jù)處理中會(huì)有30%是實(shí)時(shí)數(shù)據(jù)處理。

? 數(shù)據(jù)智能化趨勢明顯,隨著AI和5G技術(shù)的發(fā)展,非結(jié)構(gòu)化數(shù)據(jù)快速增長,到2025年預(yù)計(jì)80%的數(shù)據(jù)都是非結(jié)構(gòu)化數(shù)據(jù)。

在數(shù)據(jù)爆炸性增長、企業(yè)全面上云的大背景下,海量數(shù)據(jù)的存儲(chǔ)、處理的性能及性價(jià)比是云原生數(shù)倉面向未來最核心的關(guān)鍵技術(shù)指標(biāo)之一,TPC官方推出的TPC-DS基準(zhǔn)測試是對(duì)一個(gè)數(shù)據(jù)倉庫從數(shù)據(jù)導(dǎo)入、查詢性能(單并發(fā)、多并發(fā))、查詢復(fù)雜度(覆蓋星型模型/雪花模型、復(fù)雜Window function支持)、可用性(數(shù)據(jù)一致、壞盤容錯(cuò)處理等)全方面的嚴(yán)格考核,并需要進(jìn)行全面嚴(yán)苛的審計(jì),是目前全球衡量一個(gè)數(shù)據(jù)倉庫成熟度、競爭力的核心基準(zhǔn)測試。

AnalyticDB作為云時(shí)代的云原生數(shù)據(jù)倉庫,參與TPC-DS基準(zhǔn)測試是我們提升自研產(chǎn)品產(chǎn)品化能力、核心技術(shù)突破驗(yàn)證的重要過程,也是我們技術(shù)走向全球領(lǐng)先的必經(jīng)之路,這個(gè)過程中的核心技術(shù)突破正在幫我們的客戶提升性能進(jìn)一步提升實(shí)時(shí)化進(jìn)程、大幅降低成本,一起進(jìn)入數(shù)據(jù)庫與大數(shù)據(jù)一體化、業(yè)務(wù)在線化的新時(shí)代。

1. AnalyticDB介紹

AnalyticDB(簡稱ADB,原ADS) 是阿里巴巴自主研發(fā)、唯一經(jīng)過超大規(guī)模以及核心業(yè)務(wù)驗(yàn)證的PB級(jí)實(shí)時(shí)數(shù)據(jù)倉庫,自2012年第一次在集團(tuán)發(fā)布上線以來,至今已累計(jì)迭代發(fā)布近百個(gè)版本,支撐起集團(tuán)內(nèi)的電商、廣告、物流、文娛、旅游、風(fēng)控等眾多在線分析業(yè)務(wù)。AnalyticDB于2014年在阿里云開始正式對(duì)外輸出,支撐行業(yè)既包括傳統(tǒng)的大中型企業(yè)和政府機(jī)構(gòu),也包括眾多的互聯(lián)網(wǎng)公司,覆蓋外部十幾個(gè)行業(yè)。

AnalyticDB MySQL 3.0 (簡稱ADB 3.0)是在過去8年沉淀的基礎(chǔ)上,基于數(shù)據(jù)庫大數(shù)據(jù)一體化的理念及趨勢以及工程上深度打磨出的云原生數(shù)倉升級(jí)版本。在本次TPC-DS基準(zhǔn)測試中,AnalyticDB MySQL 3.0充分展現(xiàn)了出色的云原生技術(shù)優(yōu)勢,對(duì)比友商有近10倍的巨大優(yōu)勢!

2. TPC-DS性能基準(zhǔn)介紹

TPC (Transaction Processing Performance Council) 是事務(wù)性能管理委員會(huì)的簡稱,是最知名的非盈利的數(shù)據(jù)管理系統(tǒng)評(píng)測基準(zhǔn)標(biāo)準(zhǔn)化組織,它制定商務(wù)應(yīng)用基準(zhǔn)程序(Benchmark)的標(biāo)準(zhǔn)規(guī)范、性能和價(jià)格度量,并管理測試結(jié)果的發(fā)布,而TPC Benchmark測試結(jié)果是衡量一個(gè)數(shù)據(jù)管理系統(tǒng)性能及性價(jià)比的最核心指標(biāo)之一。

TPC-DS基準(zhǔn)測試模擬了一個(gè)典型的零售行業(yè)數(shù)據(jù)倉庫的評(píng)測決策支持系統(tǒng)(Decision Support),是數(shù)據(jù)庫界最具挑戰(zhàn)的一個(gè)測試基準(zhǔn),是TPC-H的升級(jí)版,它采用星型、雪花等多維數(shù)據(jù)模式,測試集包含對(duì)大數(shù)據(jù)集的統(tǒng)計(jì)、報(bào)表生成、聯(lián)機(jī)查詢、數(shù)據(jù)挖掘等復(fù)雜應(yīng)用,與真實(shí)場景非常接近。

TPC-DS的難點(diǎn)和挑戰(zhàn)主要有:

  • 數(shù)據(jù)集規(guī)模大,例如事實(shí)表store_sales,單表超過280億行。
  • 面向真實(shí)零售決策場景,SQL非常復(fù)雜:覆蓋SQL99和2003的核心部分以及OLAP標(biāo)準(zhǔn);既包含報(bào)表類ad-hoc低延時(shí)查詢,又包含海量數(shù)據(jù)挖掘高吞吐分析查詢。
  • 測試項(xiàng)多且維度廣:既要高性能、高可靠、高可用、高性價(jià)比,又要ETL和數(shù)據(jù)更新的ACID能力。

TPC-DS測試流程及數(shù)據(jù)模型:

3. AnalyticDB MySQL 3.0 技術(shù)架構(gòu)

AnalyticDB MySQL 3.0 采用云原生架構(gòu),計(jì)算存儲(chǔ)分離、冷熱數(shù)據(jù)分離,支持高吞吐實(shí)時(shí)寫入和數(shù)據(jù)強(qiáng)一致,兼顧高并發(fā)查詢和大吞吐批處理的混合負(fù)載。


第一層是接入層,由Mulit-Master可線性擴(kuò)展的協(xié)調(diào)節(jié)點(diǎn)構(gòu)成,主要負(fù)責(zé)協(xié)議層接入、SQL解析和優(yōu)化、實(shí)時(shí)寫入Sharding、數(shù)據(jù)調(diào)度和查詢調(diào)度。

第二層是計(jì)算引擎,具備分布式MPP+DAG融合執(zhí)行能力,結(jié)合智能優(yōu)化器,可支持高并發(fā)和復(fù)雜SQL混合負(fù)載,同時(shí)借助于云原生基礎(chǔ)設(shè)施,計(jì)算節(jié)點(diǎn)實(shí)現(xiàn)了彈性調(diào)度,可根據(jù)業(yè)務(wù)需求做到分鐘級(jí)甚至秒級(jí)擴(kuò)展,達(dá)到了資源的有效利用。

第三層是存儲(chǔ)引擎,基于Raft協(xié)議實(shí)現(xiàn)的分布式實(shí)時(shí)強(qiáng)一致高可用存儲(chǔ)引擎,通過數(shù)據(jù)分片和Multi-Raft實(shí)現(xiàn)并行,利用分層存儲(chǔ)實(shí)現(xiàn)冷熱分離降低成本,通過行列存儲(chǔ)和智能索引達(dá)到極致性能。

4. AnalyticDB存儲(chǔ)技術(shù)

4.1 分布式強(qiáng)一致存儲(chǔ)

AnalyticDB MySQL 3.0 存儲(chǔ)完全自主研發(fā),基于Raft協(xié)議構(gòu)建了一套分布式強(qiáng)一致高可靠的輕量級(jí)存儲(chǔ)架構(gòu),可實(shí)現(xiàn)高吞吐實(shí)時(shí)寫入,適合極致分析性能場景。AnalyticDB MySQL 3.0存儲(chǔ)相比開源HBase、Kudu等在SQL分析性能上有較大優(yōu)勢,并且在實(shí)時(shí)寫入強(qiáng)一致可見、支持ACID方面也是開源ElasticSearch、ClickHouse等所不具備的能力。

AnalyticDB存儲(chǔ)整體架構(gòu)如下:


AnalyticDB MySQL 3.0是基于數(shù)據(jù)庫的并行數(shù)據(jù)模型,存儲(chǔ)建模親和MPP計(jì)算模型,內(nèi)部實(shí)現(xiàn)為多層并行的架構(gòu):

  • 第一級(jí)是集群實(shí)例級(jí)并行,用戶實(shí)例被劃分為多個(gè)存儲(chǔ)節(jié)點(diǎn)組(Worker Group),每個(gè)Worker Group由 N(通常是3,也可以是其他基數(shù))個(gè)Worker構(gòu)成。Worker相當(dāng)于用戶數(shù)據(jù)節(jié)點(diǎn)容器,分組的目標(biāo)是保證系統(tǒng)大規(guī)模擴(kuò)展時(shí)不會(huì)出現(xiàn)通信膨脹、也方便系統(tǒng)并行升級(jí)和運(yùn)維。
  • 第二級(jí)是DB并行,用戶數(shù)據(jù)庫被切分為N個(gè)物理分庫(Shard,也叫數(shù)據(jù)分片),每個(gè)Shard是獨(dú)立的Raft Group以保證數(shù)據(jù)強(qiáng)一致,多個(gè)Shard就形成了multi-raft的并行。Shard是可以是Hash或者Range分區(qū),通常Hash分區(qū)可以做數(shù)據(jù)對(duì)齊以避免數(shù)據(jù)大表JOIN的數(shù)據(jù)Shuffle;Shard可以在需要的時(shí)候在不同Worker Group之間均衡或者遷移,Shard本身也會(huì)支持動(dòng)態(tài)分裂和合并。
  • 第三是表內(nèi)并行,對(duì)于數(shù)倉場景的歷史數(shù)據(jù)存儲(chǔ)通常有數(shù)據(jù)分區(qū)的概念,例如TPC-DS中store sales就可以根據(jù)時(shí)間周期分區(qū),數(shù)據(jù)分區(qū)除方便數(shù)據(jù)生命周期管理外還可以支持查詢分區(qū)裁剪和DFP,有助于大幅縮小數(shù)據(jù)計(jì)算范圍。

在TPC-DS基準(zhǔn)測試中,通過分布式并行存儲(chǔ)架構(gòu)以及感知存儲(chǔ)分布的查詢優(yōu)化和執(zhí)行引擎緊密配合,整體性能優(yōu)異。

4.2 高性能批量導(dǎo)入

數(shù)據(jù)導(dǎo)入速度是云數(shù)倉的基礎(chǔ)能力,在TPC-DS中對(duì)導(dǎo)入有著極致的性能要求,我們的第一個(gè)優(yōu)化思路是輕量級(jí)build(把實(shí)時(shí)數(shù)據(jù)轉(zhuǎn)換為全量分區(qū)數(shù)據(jù)稱之為build),AnalyticDB MySQL 3.0實(shí)現(xiàn)了輕量化的全內(nèi)存單副本local build,相比之前版本的類MR作業(yè)的全量build大幅減少了讀寫DFS和落盤開銷,并且可以充分通過本地化向量指令有效利用CPU提升性能。

第二個(gè)思路是IO和網(wǎng)絡(luò)優(yōu)化,在導(dǎo)入鏈路上,我們采用DirectIO、Binary化、全流式、異步化、零拷貝等技術(shù)大幅提升導(dǎo)入性能。

第三個(gè)思路是減少數(shù)據(jù)量,通過Raft 2+1技術(shù)(2份數(shù)據(jù)+1份日志)在保證數(shù)據(jù)高可靠的前提下將數(shù)據(jù)量減少1/3, 再通過高性能lz4壓縮算法將數(shù)據(jù)進(jìn)一步壓縮,整體下來數(shù)據(jù)的讀寫IO和網(wǎng)絡(luò)傳輸開銷都得到大幅優(yōu)化。


最終,在TPC-DS 18個(gè)節(jié)點(diǎn)上可以實(shí)現(xiàn)超過5000萬/秒 的導(dǎo)入性能。

4.3 高吞吐實(shí)時(shí)更新DML

AnalyticDB MySQL 3.0基于Raft實(shí)現(xiàn)了高吞吐實(shí)時(shí)數(shù)據(jù)更新能力,寫入鏈路通過全異步化、零拷貝、高效編碼壓縮等實(shí)現(xiàn)了出色的性能,在TPC-DS DML測試中,AnalyticDB十幾個(gè)節(jié)點(diǎn)可以做到千萬級(jí)TPS實(shí)時(shí)寫入更新,并且能夠保證線性一致性(寫入后立即可查)。在實(shí)際生產(chǎn)中,用戶寫入性能完全可擴(kuò)展,可以輕松實(shí)現(xiàn)億級(jí)TPS的實(shí)時(shí)寫入更新。

在TPC-DS中,需要驗(yàn)證數(shù)據(jù)倉庫的數(shù)據(jù)修改和ACID能力,AnalyticDB MySQL 3.0 支持ETL事務(wù),具備ACID能力(可以完整跑TPC-C事務(wù)功能測試),在TPC-DS的DML測試中,存儲(chǔ)引擎MVCC能力發(fā)揮了巨大的作用:存儲(chǔ)引擎通過切分為實(shí)時(shí)數(shù)據(jù)(Delta)和分區(qū)數(shù)據(jù)(Main)+ 異步的數(shù)據(jù)轉(zhuǎn)換(Build)實(shí)現(xiàn)了類LSM寫優(yōu)化架構(gòu)。AnalyticDB實(shí)現(xiàn)了Block-level MVCC + 快照隔離,可以保證ETL和數(shù)據(jù)更新過程中數(shù)據(jù)的隔離性(可見性)、在壞盤出錯(cuò)時(shí)可以保證數(shù)據(jù)更新原子性。

4.4 行列混存和智能索引

AnalyticDB MySQL 3.0通過自研的行列混存格式,能夠兼顧高篩選率和大吞吐掃描兩種場景,相比開源ORCFile的純列存格式在明細(xì)點(diǎn)查上更有優(yōu)勢,而相比Parquet,AnalyticDB MySQL存儲(chǔ)格式具有更出色的隨機(jī)讀性能,同時(shí)對(duì)比業(yè)界行存表+列存表兩份數(shù)據(jù)冗余的模式成本更低。在AnalyticDB MySQL中,每個(gè)Table都有一個(gè)行列存儲(chǔ)格式文件,數(shù)據(jù)被切分成不同的RowGroup,在RowGroup內(nèi)由列的Block構(gòu)成,Block內(nèi)對(duì)定長、非定長(Toast)數(shù)據(jù)的進(jìn)行有效的編碼和壓縮,并且支持高效的隨機(jī)讀和順序讀。

在TPC-DS 測試中,通過配置合理的存儲(chǔ)Block大小(4KB對(duì)齊)、數(shù)據(jù)塊預(yù)取、源頭算子向量讀等大幅優(yōu)化了存儲(chǔ)掃描性能;同時(shí),存儲(chǔ)上精確的統(tǒng)計(jì)信息(min/max/sum/cnt等)一方面可以加速數(shù)據(jù)過濾(Smart Scan),另一方面還能夠?yàn)椴樵儍?yōu)化器提供豐富的Statistics以幫助制定出最優(yōu)的執(zhí)行計(jì)劃。


AnalyticDB MySQL的特色之一是自研智能索引框架,支持五種索引類型:字符串類的Invert索引、bitmap索引、數(shù)值類的KDTree索引、JSON索引和向量索引;不同類型的索引可以實(shí)現(xiàn)列級(jí)索引多種條件(交、并、差)任意組合;相比較傳統(tǒng)數(shù)據(jù)的優(yōu)勢是,無需建組合索引(不會(huì)引起空間膨脹)、且支持OR/NOT等更多條件的索引下推。為了降低用戶使用門檻,AnalyticDB在建表時(shí)可以開啟一鍵自動(dòng)全列索引,查詢時(shí)通過Index CBO智能動(dòng)態(tài)篩選索引下推,確定下推的索引鏈會(huì)通過謂詞計(jì)算層進(jìn)行流式漸進(jìn)多路歸并輸出。

5. AnalyticDB查詢技術(shù)

AnalyticDB MySQL 3.0 的查詢引擎,由自研的查詢優(yōu)化器和查詢執(zhí)行器兩個(gè)模塊組成。它是AnalyticDB MySQL 提供高并發(fā)、高吞吐數(shù)倉分析能力的重要一環(huán)。感知數(shù)據(jù)特征,深度結(jié)合存儲(chǔ)引擎的架構(gòu),同時(shí)支持Reporting、Ad-hoc、ETL數(shù)倉分析場景,是其相較于單一計(jì)算引擎的核心優(yōu)勢。

作為一款分布式云原生實(shí)時(shí)數(shù)倉產(chǎn)品,AnalyticDB MySQL的優(yōu)化器不僅僅要面臨傳統(tǒng)優(yōu)化器所涉及的挑戰(zhàn),例如復(fù)雜 Join Reorder 的 NP-hard 問題,代價(jià)估算的不確定性問題,還面臨在分布式環(huán)境下分布式并行計(jì)劃的新問題。CBO 做為AnalyticDB MySQL 3.0版本最新成果,在 TPC-DS戰(zhàn)役中首次開啟使用,對(duì)于整體計(jì)劃的調(diào)優(yōu),起到了非常重要的作用。

ADB 查詢執(zhí)行引擎,以統(tǒng)一的內(nèi)存池化和查詢的混合負(fù)載管理能力為基礎(chǔ),使用動(dòng)態(tài)代碼生成技術(shù),創(chuàng)新性的混合執(zhí)行模型,利用SIMD指令集的向量化算法,以及自適應(yīng)的面向行、列混合存儲(chǔ)的查詢執(zhí)行等技術(shù),是AnalyticDB MySQL持續(xù)的在TPC-DS查詢性能上領(lǐng)先的關(guān)鍵因素。

5.1 CBO查詢優(yōu)化框架


基于代價(jià)的優(yōu)化器本質(zhì)上是一個(gè)復(fù)雜的搜索問題,想要解決好這個(gè)問題,需要從四個(gè)方面入手:

搜索框架:從數(shù)據(jù)庫的發(fā)展歷程來看,基于 Cascades 的搜索框架已經(jīng)成為了業(yè)界標(biāo)準(zhǔn),包括商業(yè)數(shù)據(jù)庫 SQL Server 以及開源數(shù)據(jù)庫 GP/ORCA 都采用 Cascades 實(shí)現(xiàn)。AnalyticDB MySQL優(yōu)化器CBO 也是基于 Cascades 論文實(shí)現(xiàn)的。搜索框架面臨的一個(gè)核心問題是搜索空間會(huì)急速膨脹,但是搜索時(shí)間需要維持毫秒級(jí)響應(yīng),因此需要有高效的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)搜索空間、高效的優(yōu)化規(guī)則生成搜索空間、高效的搜索算法遍歷搜索空間,高效的剪枝策略裁剪搜索空間。

分布式并行計(jì)劃:相對(duì)于傳統(tǒng)的單機(jī)版數(shù)據(jù)庫來說,分布式 MPP 數(shù)據(jù)庫給優(yōu)化器帶來了新的挑戰(zhàn)。在分布式 MPP 數(shù)據(jù)庫中,數(shù)據(jù)的分布屬性變得十分的重要,它會(huì)直接影響到數(shù)據(jù)的正確性。為了滿足不同算子對(duì)數(shù)據(jù)分布的要求,數(shù)據(jù)重分布不可避免,然而數(shù)據(jù)的重分布即數(shù)據(jù) shuffle 的代價(jià)非常昂貴,因此,在保證數(shù)據(jù)正確性的前提下,盡可能的減少數(shù)據(jù) shuffle。作為分布式 MPP 數(shù)據(jù)庫優(yōu)化器來說,需要把數(shù)據(jù)的 Partitioning 屬性,以及 Sorting、Grouping 屬性,也納入到搜索空間來綜合考慮,基于代價(jià)選擇最優(yōu)的分布式并行執(zhí)行計(jì)劃。

代價(jià)估算:代價(jià)估算是優(yōu)化器能否尋找到最優(yōu)計(jì)劃的關(guān)鍵因素。代價(jià)估算涉及到統(tǒng)計(jì)信息的推導(dǎo)和代價(jià)模型。統(tǒng)計(jì)信息的推導(dǎo)依賴于:原始表的統(tǒng)計(jì)信息、中間算子的推導(dǎo)算法、對(duì)數(shù)據(jù)的各種假設(shè)(均勻性假設(shè)、獨(dú)立性假設(shè)、包括性假設(shè)、包含性假設(shè))以及在一些極端情況下的猜測。因此統(tǒng)計(jì)信息的推導(dǎo)存在大量的不確定性,也正是因?yàn)檫@些不確定性,極大的加劇了優(yōu)化器尋找最優(yōu)解的難度。本質(zhì)上來說,只有打破對(duì)數(shù)據(jù)屬性的假設(shè),才有可能使得統(tǒng)計(jì)信息的估算做到知其然知其所以然,然而打破這些假設(shè),也要付出更多的代價(jià)。

統(tǒng)計(jì)信息收集:收集必要的統(tǒng)計(jì)信息是 CBO 工作的前提,統(tǒng)計(jì)信息需要做到:基本信息能夠自動(dòng)化收集,自動(dòng)化更新,高級(jí)統(tǒng)計(jì)信息可以手動(dòng)收集,為 CBO 提供可靠的、多緯度的統(tǒng)計(jì)信息。在實(shí)際的情況下,可能存在統(tǒng)計(jì)信息丟失或者沒有及時(shí)收集,在這種情況下,為了避免生成災(zāi)難性的計(jì)劃,可以在運(yùn)行時(shí)動(dòng)態(tài)采樣來獲取必要的統(tǒng)計(jì)信息。

5.2 混合查詢執(zhí)行框架

傳統(tǒng)的火山執(zhí)行模型不能滿足分析場景高吞吐的性能需求已經(jīng)成為業(yè)界的共識(shí)。隨著各個(gè)系統(tǒng)的不斷發(fā)展,目前業(yè)界計(jì)算引擎有2種演化后的執(zhí)行框架實(shí)現(xiàn):

? Just-in-time (JIT) compilation

? Vectorization

JIT編譯方式以數(shù)據(jù)為中心,一條數(shù)據(jù)經(jīng)過上一個(gè)算子處理后,還在CPU緩存中便直接進(jìn)行下一個(gè)算子的計(jì)算,對(duì)CPU緩存友好,適合計(jì)算密集型任務(wù)。Vectorization中每個(gè)算子處理一批數(shù)據(jù)后,將一批結(jié)果再交給下一個(gè)算子計(jì)算。適合內(nèi)存密集型任務(wù)以及向量計(jì)算,用中間結(jié)果物化的開銷換取算子的計(jì)算高內(nèi)聚。


JIT編譯方式和Vectorization各有所長,如上圖所示,紅色表示JIT編譯方式,綠色表示Vectorization方式。目前AnalyticDB MySQL是唯一的同時(shí)支持這兩種查詢模式的自研分析引擎?;旌蠄?zhí)行框架,在Vectorization執(zhí)行模式的基礎(chǔ)上,自適應(yīng)的把多個(gè)計(jì)算密集特征的算子融合成一個(gè)驅(qū)動(dòng)執(zhí)行。實(shí)現(xiàn)了一個(gè)查詢執(zhí)行引擎同時(shí)具備Compilation和Vectorization的優(yōu)點(diǎn)。

5.3 統(tǒng)一內(nèi)存管理

在內(nèi)存方面,高效的內(nèi)存管理是計(jì)算優(yōu)化的基石。面向類型的內(nèi)存模型,特指針對(duì)不同的數(shù)據(jù)類型使用不同的基礎(chǔ)類型存儲(chǔ)。這導(dǎo)致不同的類型無法存儲(chǔ)在連續(xù)的內(nèi)存地址中,僅能通過按列的方式進(jìn)行存儲(chǔ),減少多個(gè)內(nèi)存對(duì)象帶來的額外代價(jià)。另外一方面,不同內(nèi)存類型間的內(nèi)存無法復(fù)用,這會(huì)造成額外的內(nèi)存管理代價(jià)。


ADB的查詢執(zhí)行引擎,通過統(tǒng)一內(nèi)存管理來解決上面的幾個(gè)問題

  • 內(nèi)存binary化: 統(tǒng)一內(nèi)存類型,不同類型均使用相同的數(shù)據(jù)類型(byte)來存儲(chǔ),同時(shí)這也是查詢執(zhí)行面向行存,緩存友好算法優(yōu)化的基石;
  • 規(guī)范化的內(nèi)存管理規(guī)格:統(tǒng)一內(nèi)存規(guī)格,降低內(nèi)存碎片帶來的額外代價(jià),并且降低復(fù)用內(nèi)存的難度;
  • 分層的內(nèi)存管理:統(tǒng)一內(nèi)存管理,根據(jù)計(jì)算特點(diǎn)對(duì)應(yīng)內(nèi)存的生命周期,針對(duì)內(nèi)存使用特點(diǎn),實(shí)現(xiàn)MemoryCache, MemoryPool,并且支持內(nèi)存泄漏檢測,實(shí)現(xiàn)面向常駐服務(wù)的主動(dòng)內(nèi)存管理;

5.4 DFP 和 CTE技術(shù)

在數(shù)據(jù)倉庫中,事實(shí)表和維度表 Join是典型場景,他們之間的數(shù)據(jù)量的差異可以達(dá)到千萬倍級(jí)別,這個(gè)時(shí)候,Join的計(jì)算成本更多的在于數(shù)據(jù)的掃描成本,因此我們會(huì)采用 DynamicFilterPushDown 的方式,來極大的減少左表的數(shù)據(jù)量。另外數(shù)據(jù)倉庫中會(huì)出現(xiàn)大量的 WITH 語句以及隱式的共享語句,這些都可以通過 Common Table Expression 的共享來避免重復(fù)計(jì)算。

DFP(DynamicFilterPushDown)對(duì)于篩選率高的 Join (命中率低)、Probe端的數(shù)據(jù)從存儲(chǔ)中被讀上來之后,大部分?jǐn)?shù)據(jù)會(huì)被丟棄掉。因此如果評(píng)估出來 build 的數(shù)據(jù)維持在一個(gè)比較小范圍的閾值,那么我們就可以把 build 端結(jié)果值,作為左表的過濾條件,也就是 Dynamic Filter,直接下推存儲(chǔ),減少掃描量。對(duì)于優(yōu)化器來說,最主要的工作就是要合理評(píng)估 build 端命中 Join 條件的 NDV 值。

不同的 Join Order 直接影響可做 Dynamic Filter 的范圍和粒度,能夠進(jìn)行該優(yōu)化的 Join 其 Cost 與真正的 Hash Join 有巨大的差異反過來也影響了 Join Order?;?ADB 完善且擴(kuò)展性較好的 CBO 框架,我們做到了從全局考慮,基于 Cost 選擇最優(yōu)的 Dynamic Filter 方案。

在執(zhí)行層面,我們通過如下三個(gè)關(guān)鍵點(diǎn)實(shí)行有高效的DFP:

  • 高效動(dòng)態(tài)謂詞構(gòu)建,通過進(jìn)程內(nèi)in-place構(gòu)建動(dòng)態(tài)謂詞,降低動(dòng)態(tài)文詞構(gòu)建代價(jià);
  • 多層過濾執(zhí)行優(yōu)化,結(jié)合bloomfilter,分區(qū)裁剪,感知存儲(chǔ)索引等方式,加速過濾效果;
  • 異構(gòu)數(shù)據(jù)源的下推,統(tǒng)一數(shù)據(jù)源接口層抽象實(shí)現(xiàn),擴(kuò)展異構(gòu)數(shù)據(jù)源的支持;

CTE(Common table expression),TPC-DS 30%+的sql中包含with as用法, 通過with as子查詢,在主查詢中多次引用,每一次引用帶來了額外的重復(fù)計(jì)算,導(dǎo)致資源浪費(fèi)?;A(chǔ)的CTE優(yōu)化,通過復(fù)用with子句的結(jié)果給多個(gè)引用方,來減少重復(fù)計(jì)算的代價(jià)。但是對(duì)于部分場景,與主查詢的關(guān)系推導(dǎo)可以進(jìn)一步減少with子查詢中的計(jì)算量,這時(shí)直接share完整with子句會(huì)導(dǎo)致額外的性能回退。那么通過inline后的最優(yōu)計(jì)劃,進(jìn)行common sub tree的識(shí)別,進(jìn)一步減少重復(fù)計(jì)算量,達(dá)到無bad case的效果。執(zhí)行器實(shí)現(xiàn)中,我們引入了死鎖檢測,通過分析common sub tree的多個(gè)consumer之間的依賴關(guān)系,解決死鎖問題。

6. 客戶場景和案例

AnalyticDB自2014年上云后已在全球主要Region開服,開始進(jìn)入全球分析市場,2018年,成功入選了全球權(quán)威IT咨詢機(jī)構(gòu)Forrester發(fā)布"The Forrester Wave?: CloudData Warehouse,Q4 2018"研究報(bào)告的Contenders象限,以及Gartner發(fā)布的分析型數(shù)據(jù)管理平臺(tái)報(bào)告 (Magic Quadrant for Data Management Solutions for Analytics)。

AnalyticDB已廣泛應(yīng)用于阿里巴巴集團(tuán)內(nèi)部和阿里云外部客戶,具有替換Teradata、Oracle RAC的生產(chǎn)案例,在泛互聯(lián)網(wǎng)、新零售、金融、稅務(wù)、交通、氣象、物流等核心行業(yè)得到大規(guī)模應(yīng)用和驗(yàn)證,如在物流行業(yè)支持中國郵政首次實(shí)現(xiàn)全國物流查詢分析大集中等。

7. 總結(jié)和展望

AnalyticDB經(jīng)過數(shù)據(jù)庫領(lǐng)域最頂級(jí)會(huì)議VLDB論文(AnalyticDB: Realtime OLAP Database System at Alibaba Cloud)的理論驗(yàn)證(中國極其少有的大規(guī)模商用系統(tǒng)介紹論文,類似有Google F1[VLDB’2013]、AWS Aurora[SIGMOD’2017]等)、TPC-DS全球領(lǐng)先的工程驗(yàn)證(TPC-DS全球性價(jià)比、性能雙雙領(lǐng)先)、覆蓋核心部委以及大型泛互聯(lián)網(wǎng)客戶的客戶驗(yàn)證、阿里集團(tuán)多年的超大規(guī)模驗(yàn)證形成了多方面優(yōu)勢,基于云計(jì)算的高效資源效率、數(shù)據(jù)庫與大數(shù)據(jù)一體化發(fā)展趨勢,正式完成重大品牌升級(jí),由**“分析型數(shù)據(jù)庫**”升級(jí)為“云原生數(shù)據(jù)倉庫”。

未來以來,大數(shù)據(jù)與數(shù)據(jù)庫一體化+云原生將會(huì)重新定義云計(jì)算時(shí)代的數(shù)據(jù)倉庫,TPC-DS破世界紀(jì)錄只是起點(diǎn),AnalyticDB將會(huì)持續(xù)投入致力于成為企業(yè)數(shù)字化轉(zhuǎn)型升級(jí)、數(shù)據(jù)價(jià)值在線化的基礎(chǔ)設(shè)施!

總結(jié)

以上是生活随笔為你收集整理的自研云原生数据仓库AnalyticDB再破权威评测TPC-DS世界纪录!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。