云原生数据仓库AnalyticDB支撑双11,大幅提升分析实时性和用户体验
簡(jiǎn)介:2021年雙十一剛剛落幕,已連續(xù)多年穩(wěn)定支持雙十一大促的云原生數(shù)據(jù)倉(cāng)庫(kù)AnalyticDB,今年雙十一期間仍然一如既往的穩(wěn)定。除了穩(wěn)定順滑的基本盤之外,AnalyticDB還有什么亮點(diǎn)呢?下面我們來(lái)一一揭秘。
作者 | AnalyticDB
來(lái)源 | 阿里技術(shù)公眾號(hào)
一 前言
2021年雙十一剛剛落幕,已連續(xù)多年穩(wěn)定支持雙十一大促的云原生數(shù)據(jù)倉(cāng)庫(kù)AnalyticDB,今年雙十一期間仍然一如既往的穩(wěn)定。除了穩(wěn)定順滑的基本盤之外,AnalyticDB還有什么亮點(diǎn)呢?下面我們來(lái)一一揭秘。
二 長(zhǎng)風(fēng)破浪 | AnalyticDB再戰(zhàn)雙十一
今年雙十一,AnalyticDB的戰(zhàn)場(chǎng)橫跨阿里數(shù)字經(jīng)濟(jì)體、公共云和混合云,三個(gè)戰(zhàn)場(chǎng)都穩(wěn)如泰山、成績(jī)斐然。在阿里數(shù)字經(jīng)濟(jì)體內(nèi),AnalyticDB支撐的業(yè)務(wù)幾乎覆蓋了所有BU,諸如手淘訂單搜索、菜鳥、淘特、盒馬、飛豬、貓超、阿里云等近200個(gè)雙11相關(guān)的核心業(yè)務(wù);在公有云上,AnalyticDB支撐著數(shù)云、聚水潭等諸多電商相關(guān)的核心業(yè)務(wù);在專有云上,AnalyticDB主要支持中國(guó)郵政集團(tuán)的各類業(yè)務(wù)。今年AnalyticDB支撐的業(yè)務(wù)負(fù)載特別多元化,從單庫(kù)百萬(wàn)級(jí)峰值TPS的實(shí)時(shí)數(shù)據(jù)寫入到核心交易鏈路的高并發(fā)在線訂單檢索和關(guān)鍵字精準(zhǔn)推薦,從各種業(yè)務(wù)場(chǎng)景下的復(fù)雜實(shí)時(shí)分析到各種人群和標(biāo)簽數(shù)據(jù)的大批量離線Batch&ETL任務(wù)以及數(shù)據(jù)導(dǎo)入導(dǎo)出任務(wù),這種五花八門的業(yè)務(wù)負(fù)載,甚至離在線混合負(fù)載同時(shí)執(zhí)行的場(chǎng)景,對(duì)AnalyticDB提出了巨大的挑戰(zhàn)。
面對(duì)這些業(yè)務(wù)場(chǎng)景和技術(shù)挑戰(zhàn),AnalyticDB迎難而上,今年以來(lái),全面擁抱云原生構(gòu)建極致彈性,全面推進(jìn)存儲(chǔ)計(jì)算分離架構(gòu),通過(guò)冷熱溫分層存儲(chǔ)大幅降低存儲(chǔ)成本,通過(guò)升級(jí)向量化引擎和優(yōu)化器框架大幅提升計(jì)算性能,全面推進(jìn)離在線一體化架構(gòu),進(jìn)一步提升在一套技術(shù)架構(gòu)下同時(shí)穩(wěn)定運(yùn)行在線實(shí)時(shí)查詢和離線批量計(jì)算任務(wù)的能力。正是有了這些技術(shù)積累和沉淀,AnalyticDB在今年的雙十一戰(zhàn)場(chǎng)上才能更加穩(wěn)定從容,各項(xiàng)業(yè)務(wù)指標(biāo)繼續(xù)再創(chuàng)新高,今年雙十一期間累計(jì)實(shí)時(shí)寫入21萬(wàn)億條數(shù)據(jù),批量導(dǎo)入113萬(wàn)億條數(shù)據(jù),完成350億次在線查詢和2500萬(wàn)個(gè)離線任務(wù),累計(jì)590PB數(shù)據(jù)參與計(jì)算。
不論是從支持業(yè)務(wù)場(chǎng)景的復(fù)雜度上看,還是從數(shù)據(jù)規(guī)模和計(jì)算規(guī)模上看,AnalyticDB作為離在線一體化架構(gòu)下的新一代云原生數(shù)據(jù)倉(cāng)庫(kù)已經(jīng)越來(lái)越成熟,可以為各種業(yè)務(wù)提供核心報(bào)表計(jì)算、實(shí)時(shí)分析決策、活動(dòng)大屏與系統(tǒng)監(jiān)控、智能營(yíng)銷等通用能力。同時(shí),今年AnalyticDB重點(diǎn)結(jié)合手淘訂單搜索和推薦、實(shí)時(shí)訂單同步等核心業(yè)務(wù)場(chǎng)景,以技術(shù)創(chuàng)新為核心,幫助業(yè)務(wù)解決了不少長(zhǎng)期困擾的棘手問(wèn)題,助力業(yè)務(wù)在用戶體驗(yàn)、綠色低碳、業(yè)務(wù)創(chuàng)新、安全穩(wěn)定等方面取得新突破。
1 體驗(yàn)第一:看AnalyticDB如何優(yōu)化手淘交易訂單搜索
手淘訂單搜索支持用戶輸入關(guān)鍵詞或訂單號(hào)查詢歷史訂單,是通過(guò)歷史訂單關(guān)聯(lián)商品和店鋪從而產(chǎn)生復(fù)購(gòu)的重要流量入口之一。不過(guò)由于用戶的歷史訂單信息量非常大,達(dá)數(shù)千億之多,而用戶往往僅記得商品或店鋪的模糊信息,導(dǎo)致用戶輸入的關(guān)鍵詞要么不準(zhǔn)確可能搜不到訂單,要么關(guān)鍵字很短導(dǎo)致查找到訂單很多響應(yīng)時(shí)間很長(zhǎng),極大影響手淘用戶的產(chǎn)品體驗(yàn),長(zhǎng)期為用戶所詬病。
AnalyticDB基于新實(shí)時(shí)引擎+行存表+非結(jié)構(gòu)化索引+寬表檢索的在線能力,首次實(shí)現(xiàn)了在線和歷史交易訂單的統(tǒng)一存儲(chǔ)、分析,賦能交易業(yè)務(wù)中臺(tái)對(duì)全網(wǎng)用戶十年全量的交易訂單進(jìn)行多維搜索,并根據(jù)用戶的搜索關(guān)鍵字進(jìn)行精準(zhǔn)推薦。大促峰值期間用戶反饋“訂單查不到”的輿情同比大幅下降,查詢性能也得到大幅提升,大大提升了手淘訂單搜索的用戶體驗(yàn)。
2 綠色低碳:看AnalyticDB如何助力業(yè)務(wù)降本增效
公共云客戶數(shù)云贏家2.0全域CRM平臺(tái)通過(guò)采用以云原生數(shù)據(jù)倉(cāng)庫(kù)AnalyticDB為核心的整體方案,在雙11期間對(duì)客戶洞察和細(xì)分、自動(dòng)化營(yíng)銷等核心功能進(jìn)行全面升級(jí)。基于云原生、資源池化和冷熱數(shù)據(jù)分離能力,業(yè)務(wù)研發(fā)周期比往常縮短39%,整體成本下降50%,運(yùn)營(yíng)效率提升3倍,解決了采購(gòu)實(shí)施成本過(guò)高難題,助力商家快速響應(yīng)業(yè)務(wù)變化,降本增效成果顯著。
阿里集團(tuán)內(nèi)部一個(gè)核心業(yè)務(wù)的數(shù)據(jù)分析服務(wù)每天需要執(zhí)行大量ETL離線作業(yè),同時(shí)需要支持大量實(shí)時(shí)數(shù)據(jù)寫入,以滿足準(zhǔn)實(shí)時(shí)的人群圈選服務(wù)和在線人群透視服務(wù)需求,支持?jǐn)?shù)據(jù)實(shí)時(shí)寫入和離在線混合負(fù)載的AnalyticDB一直是該服務(wù)的不二之選。今年雙十一期間,AnalyticDB 承擔(dān)了該服務(wù)數(shù)十PB數(shù)據(jù)讀寫請(qǐng)求,數(shù)百萬(wàn)次的離在線混合查詢,完成PB級(jí)數(shù)據(jù)量的ETL作業(yè)。得益于 AnalyticDB 3.0的云原生彈性能力,結(jié)合存儲(chǔ)/計(jì)算/優(yōu)化器 的全鏈路優(yōu)化,成本同比去年雙十一下降近50%。
3 唯快不破:看庫(kù)倉(cāng)一體化架構(gòu)如何支持高吞吐實(shí)時(shí)業(yè)務(wù)
今年雙十一首次采用AnalyticDB+DMS庫(kù)倉(cāng)一體化架構(gòu)替換了DRC+ESDB實(shí)現(xiàn)全實(shí)時(shí)歷史訂單搜索等核心場(chǎng)景,快速搭建毫秒級(jí)延遲的實(shí)時(shí)數(shù)據(jù)鏈路和數(shù)據(jù)應(yīng)用,讓實(shí)時(shí)數(shù)據(jù)的價(jià)值得到充分發(fā)揮,助力業(yè)務(wù)在更加實(shí)時(shí)的數(shù)據(jù)應(yīng)用場(chǎng)景和更加極致的用戶體驗(yàn)上產(chǎn)生新變化、取得新突破。
在交易訂單搜索業(yè)務(wù)中,根據(jù)交易業(yè)務(wù)特點(diǎn)搭建了多路數(shù)據(jù)同步鏈路并采用AnalyticDB主備容災(zāi)部署方案,雙十一大促期間輕松支持RPS達(dá)數(shù)百萬(wàn)的峰值流量,全程毫秒級(jí)延遲。
三 常勝之秘 | AnalyticDB最新核心技術(shù)解析
1 離在線服務(wù)化存儲(chǔ)
AnalyticDB的存儲(chǔ)層今年完成了服務(wù)化改造,具備一份數(shù)據(jù)、一套存儲(chǔ)格式同時(shí)支持實(shí)時(shí)更新、交互式查詢、離線ETL及明細(xì)點(diǎn)查多場(chǎng)景一體化能力。基于存儲(chǔ)服務(wù)層、行列混存、分層存儲(chǔ)、自適應(yīng)索引等技術(shù),可同時(shí)支持在線低延遲+強(qiáng)一致和離線高吞吐兩種數(shù)據(jù)讀寫場(chǎng)景。
存儲(chǔ)服務(wù):離在線統(tǒng)一訪問(wèn)接口
接口層方面,AnalyticDB存儲(chǔ)向上提供統(tǒng)一的數(shù)據(jù)訪問(wèn)接口,數(shù)據(jù)交互采用Apache Arrow[1]數(shù)據(jù)格式,基于零拷貝技術(shù)實(shí)現(xiàn)高效傳輸,計(jì)算層可以基于Arrow內(nèi)存列式的接口進(jìn)行CPU友好的向量化計(jì)算加速;元數(shù)據(jù)兼容Hive MetaService的Thrift交互協(xié)議,開源計(jì)算引擎可以無(wú)縫對(duì)接AnalyticDB存儲(chǔ)系統(tǒng)。
服務(wù)層方面,AnalyticDB存儲(chǔ)采用類LSM架構(gòu)[2],把存儲(chǔ)分為實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)兩部分,實(shí)時(shí)數(shù)據(jù)存儲(chǔ)在在線存儲(chǔ)節(jié)點(diǎn)上,作為“熱”數(shù)據(jù),支持低延遲數(shù)據(jù)訪問(wèn),且支持強(qiáng)一致CURD。歷史數(shù)據(jù)存儲(chǔ)在OSS或HDFS等低成本的分布式文件系統(tǒng)上,作為“冷”數(shù)據(jù),支持高吞吐數(shù)據(jù)訪問(wèn)。同時(shí),AnalyticDB存儲(chǔ)服務(wù)層還支持謂詞、投影、聚合、Top N等計(jì)算下推能力,減少數(shù)據(jù)的掃描和讀取量,進(jìn)一步加速查詢。
行列混存:離在線統(tǒng)一存儲(chǔ)格式
既然提供了一體化的存儲(chǔ)服務(wù),必然會(huì)涉及到在線低延遲查詢和離線高吞吐計(jì)算場(chǎng)景,AnalyticDB存儲(chǔ)格式采用PAX格式[3]兼顧了離在線兩種場(chǎng)景。
在線場(chǎng)景,與索引配合提供高效的檢索查找能力。AnalyticDB的存儲(chǔ)格式每個(gè)Chunk定長(zhǎng)存儲(chǔ),能夠和索引深度融合,可以基于行號(hào)隨機(jī)查找,保證高效的隨機(jī)讀性能,可以很好地滿足在線多維度篩選的場(chǎng)景。此外,還提供了豐富的統(tǒng)計(jì)信息,可以和索引配合做疊加優(yōu)化,從而進(jìn)一步加速查詢。
離線場(chǎng)景,AnalyticDB的存儲(chǔ)格式可以按照Chunk粒度切分?jǐn)?shù)據(jù)讀取的并行度,多Chunk并行訪問(wèn),提高離線讀的吞吐性能。AnalyticDB的一張表支持多個(gè)分區(qū),且分區(qū)內(nèi)支持多Segment,可以通過(guò)切分Segment來(lái)提高數(shù)據(jù)寫入的并行度,從而提高離線寫的吞吐性能。此外,每個(gè)Chunk提供了Min/Max等粗糙集索引信息,可以利用這些索引信息減少離線讀的數(shù)據(jù)掃描量和IO資源消耗。
自適應(yīng)索引
AnalyticDB另一個(gè)特色之一是自研自適應(yīng)索引框架,支持五種索引類型:字符串倒排索引、Bitmap索引、數(shù)字類型KDTree索引、JSON索引和向量索引;不同類型的索引可以支持多種條件(交、并、差)下列級(jí)索引的任意組合;相較于傳統(tǒng)數(shù)據(jù)庫(kù),AnalyticDB的優(yōu)勢(shì)在于,無(wú)需手工構(gòu)建組合索引(組合索引需要精巧的設(shè)計(jì)、且容易引起索引數(shù)據(jù)的空間膨脹)、且支持OR/NOT等更多條件的索引下推。為了降低用戶使用門檻,AnalyticDB在建表時(shí)可以一鍵自動(dòng)開啟全列索引,查詢時(shí)通過(guò)Index CBO自適應(yīng)動(dòng)態(tài)篩選索引下推,確定下推的索引鏈會(huì)通過(guò)謂詞計(jì)算層進(jìn)行流式漸進(jìn)多路歸并輸出。
冷熱分層:降低用戶成本、按量計(jì)費(fèi)
AnalyticDB提供的冷熱分層存儲(chǔ)能力4可以為用戶帶來(lái)更高性價(jià)比的體驗(yàn)。用戶可以按表粒度、表的二級(jí)分區(qū)粒度獨(dú)立選擇冷、熱存儲(chǔ)介質(zhì),比如指定用戶表數(shù)據(jù)全部存儲(chǔ)在熱存儲(chǔ)介質(zhì),或指定表數(shù)據(jù)全部存儲(chǔ)在冷存儲(chǔ)介質(zhì),或指定表的一部分分區(qū)數(shù)據(jù)存儲(chǔ)在熱存儲(chǔ)介質(zhì),另一部分分區(qū)數(shù)據(jù)存儲(chǔ)在冷存儲(chǔ)介質(zhì),完全可以按業(yè)務(wù)需求自由指定,并且冷熱策略可以自由轉(zhuǎn)換。同時(shí),熱數(shù)據(jù)和冷數(shù)據(jù)的空間使用是按量計(jì)費(fèi)的。業(yè)務(wù)可以根據(jù)自己的業(yè)務(wù)特點(diǎn),基于AnalyticDB的冷熱存儲(chǔ)分層技術(shù)管理業(yè)務(wù)數(shù)據(jù)的生命周期,需要頻繁訪問(wèn)的數(shù)據(jù)分區(qū)指定為熱數(shù)據(jù)存儲(chǔ)在熱存儲(chǔ)介質(zhì)以加速查詢,不需要頻繁訪問(wèn)的數(shù)據(jù)分區(qū)指定為冷數(shù)據(jù)存儲(chǔ)在冷存儲(chǔ)介質(zhì)以降低存儲(chǔ)成本,通過(guò)數(shù)據(jù)分區(qū)的生命周期管理機(jī)制自動(dòng)清理過(guò)期的數(shù)據(jù)。
2 離在線混合負(fù)載
在線場(chǎng)景的計(jì)算負(fù)載(比如在線查詢)對(duì)響應(yīng)時(shí)間要求高,對(duì)數(shù)據(jù)讀取和計(jì)算引擎的要求就是快;而離線場(chǎng)景的計(jì)算負(fù)載(比如ETL任務(wù))對(duì)響應(yīng)時(shí)間不敏感,但對(duì)計(jì)算吞吐有較高要求,不僅數(shù)據(jù)計(jì)算量大,數(shù)據(jù)讀取和寫入量也可能很大,任務(wù)執(zhí)行時(shí)間長(zhǎng)。離在線兩種完全不同場(chǎng)景的負(fù)載要在一套系統(tǒng)、一個(gè)平臺(tái)上同時(shí)執(zhí)行一直以來(lái)都是一個(gè)巨大的挑戰(zhàn)。目前業(yè)界的主流解決方案仍然是:離線任務(wù)運(yùn)行在離線大數(shù)據(jù)計(jì)算平臺(tái)(比如hadoop/spark/hive)上,在線查詢運(yùn)行在另外一個(gè)或多個(gè)單獨(dú)的OLAP系統(tǒng)(比如ClickHouse/Doris)上。不過(guò)在這種架構(gòu)下,多個(gè)系統(tǒng)內(nèi)部的數(shù)據(jù)存儲(chǔ)和格式不統(tǒng)一,計(jì)算邏輯表示(比如SQL標(biāo)準(zhǔn))也不統(tǒng)一,導(dǎo)致數(shù)據(jù)需要在多個(gè)系統(tǒng)之間相互導(dǎo)入導(dǎo)出,計(jì)算邏輯也需要分別適配對(duì)應(yīng)的系統(tǒng),數(shù)據(jù)鏈路冗長(zhǎng),數(shù)據(jù)計(jì)算和使用成本高,數(shù)據(jù)的時(shí)效性也不好。
為了解決此類問(wèn)題,AnalyticDB今年全面升級(jí)離在線混合負(fù)載能力,除了存儲(chǔ)層提供離在線統(tǒng)一存儲(chǔ)格式和統(tǒng)一訪問(wèn)接口用以解決離在線混合負(fù)載的數(shù)據(jù)讀取和寫入問(wèn)題,計(jì)算層也完成了全面升級(jí),相同的SQL查詢可以同時(shí)支持Interactive和Batch兩種執(zhí)行模式,通過(guò)資源組、讀寫負(fù)載分離、多隊(duì)列隔離和查詢優(yōu)先級(jí)等機(jī)制對(duì)不同類型的負(fù)載進(jìn)行資源隔離和管控,通過(guò)分時(shí)彈性滿足不同負(fù)載的擴(kuò)縮容和錯(cuò)峰需求。同時(shí),計(jì)算引擎全面升級(jí)為向量化引擎,大幅提升計(jì)算性能。
相同SQL兩種執(zhí)行模式
AnalyticDB支持Interactive和Batch兩種執(zhí)行模式,以分別滿足在線查詢和離線計(jì)算的不同場(chǎng)景需求。Interactive模式下,查詢以MMP(Massive Parallel Processing)方式執(zhí)行,所有Task同時(shí)調(diào)度啟動(dòng),流式讀取數(shù)據(jù)并計(jì)算輸出結(jié)果,所有計(jì)算都在內(nèi)存中進(jìn)行,盡可能減少查詢執(zhí)行時(shí)間,適合在線場(chǎng)景負(fù)載。Batch模式下,計(jì)算任務(wù)以BSP(Bulk Synchronous Parallel)方式執(zhí)行,整個(gè)任務(wù)會(huì)根據(jù)語(yǔ)義切分成多個(gè)階段(Stage),根據(jù)Stage間的依賴關(guān)系進(jìn)行調(diào)度和執(zhí)行,上游Stage執(zhí)行完才會(huì)執(zhí)行下游Stage,Stage之間的數(shù)據(jù)傳遞需要落盤,計(jì)算過(guò)程中內(nèi)存不足時(shí)也會(huì)將中間狀態(tài)落盤,因此任務(wù)整體的執(zhí)行時(shí)間會(huì)較長(zhǎng),但對(duì)CPU和內(nèi)存等計(jì)算資源的需求相對(duì)較少,適合數(shù)據(jù)大、計(jì)算資源相對(duì)有限的離線場(chǎng)景。
在AnalyticDB內(nèi)部,不論是Interactive模式還是Batch模式,表達(dá)計(jì)算邏輯的SQL是統(tǒng)一,產(chǎn)生的邏輯執(zhí)行計(jì)劃也是完全一樣的,只是根據(jù)不同的模式生成不同的物理執(zhí)行計(jì)劃,且計(jì)算引擎中絕大部分的算子實(shí)現(xiàn)也是相同的,也為統(tǒng)一升級(jí)到向量化計(jì)算引擎奠定架構(gòu)基礎(chǔ)。
全新向量化查詢引擎
向量化是當(dāng)代查詢引擎優(yōu)化查詢性能的熱點(diǎn)技術(shù)之一,相關(guān)思路最早可以追溯到Array programming在科學(xué)計(jì)算領(lǐng)域的研究,在數(shù)據(jù)庫(kù)領(lǐng)域的探索則緣起于MonetDB/X100[6]。目前工業(yè)界各主流系統(tǒng)都擁有自己的向量化實(shí)踐,但仍缺乏標(biāo)準(zhǔn)的形式化定義。一般來(lái)講,它被認(rèn)為是查詢引擎面向CPU microarchitecture一系列優(yōu)化方案的統(tǒng)稱,涉及Batch based iterator model[7],CodeGen,Cache-awareness算法[8]以及SIMD指令集應(yīng)用等技術(shù)應(yīng)用,以及計(jì)算/存儲(chǔ)一體化的架構(gòu)設(shè)計(jì)。而探索并識(shí)別這些技術(shù)間正交/依賴的關(guān)系是利用好向量化技術(shù)取得顯著性能提升的關(guān)鍵問(wèn)題。
AnalyticDB實(shí)現(xiàn)了核心算子的全面向量化,包括Scan,Exchange,Group-by/Agg,以及Join算子;方案里結(jié)合應(yīng)用了Batch Processing,Adaptive Strategy,Codegen以及Cache-awareness算法,并通過(guò)與JVM團(tuán)隊(duì)共建,基于AJDK intrinsic能力[9]創(chuàng)新地實(shí)現(xiàn)了算法關(guān)鍵路徑上SSE2,AVX512等指令集的應(yīng)用。顯著提升查詢執(zhí)行過(guò)程中CPU IPL和MPL,熱點(diǎn)算子Agg/Join的吞吐性能提升2x-15x。
混合負(fù)載隔離和穩(wěn)定性保障
多種負(fù)載在同一架構(gòu)下運(yùn)行,甚至在同一時(shí)刻運(yùn)行,不可避免存在資源競(jìng)爭(zhēng)、相互影響的問(wèn)題。AnalyticDB有一套較為完整的的機(jī)制和策略來(lái)保證集群的穩(wěn)定性,并且盡可能滿足不同業(yè)務(wù)負(fù)載的SLA要求。
首先,在混合負(fù)載場(chǎng)景或?qū)嵗齼?nèi)部多租戶場(chǎng)景下,可以通過(guò)資源組進(jìn)行有效的業(yè)務(wù)負(fù)載隔離。不同資源組之間的計(jì)算資源在物理上完全隔離,避免不同類型或業(yè)務(wù)的負(fù)載之間產(chǎn)生相互影響。不同的業(yè)務(wù)可以通過(guò)綁定賬號(hào)、提交查詢時(shí)指定資源組等多種方式指定運(yùn)行在對(duì)應(yīng)的資源組上。
其次,AnalyticDB內(nèi)部會(huì)自動(dòng)區(qū)分寫入負(fù)載(部分insert和delete)、查詢負(fù)載(比如select查詢)和讀寫負(fù)載(部分insert/update/delete),不同類型的負(fù)載任務(wù)自動(dòng)分派到不同的隊(duì)列上,且分配不同的執(zhí)行優(yōu)先級(jí)和計(jì)算資源。具體來(lái)看,寫入請(qǐng)求有單獨(dú)的加速寫入鏈路和資源保證,查詢負(fù)載默認(rèn)有較高的執(zhí)行優(yōu)先級(jí),而讀寫負(fù)載則默認(rèn)是較低的執(zhí)行優(yōu)先級(jí)。另外,在執(zhí)行過(guò)程中,AnalyticDB會(huì)根據(jù)集群的當(dāng)前負(fù)載情況和查詢?nèi)蝿?wù)已運(yùn)行的時(shí)長(zhǎng),動(dòng)態(tài)降低運(yùn)行時(shí)間較長(zhǎng)的查詢?nèi)蝿?wù)的執(zhí)行優(yōu)先級(jí),以緩解Slow Query或Bad Query對(duì)其它查詢產(chǎn)生的不利影響。
最后,很多業(yè)務(wù)都有非常明顯的呈現(xiàn)周期性的波峰波谷,特別是離線計(jì)算任務(wù)往往是周期性進(jìn)行調(diào)度和執(zhí)行的,業(yè)務(wù)高峰期時(shí)資源需求暴增可能導(dǎo)致業(yè)務(wù)不穩(wěn)定,業(yè)務(wù)低峰期時(shí)資源閑置又導(dǎo)致額外的成本。AnalyticDB提供分時(shí)彈性功能,可以幫助用戶在業(yè)務(wù)高峰期資源不足時(shí)擴(kuò)容資源以保證業(yè)務(wù)負(fù)載穩(wěn)定執(zhí)行,在業(yè)務(wù)低峰期時(shí)縮減資源以節(jié)約成本。通過(guò)合理的業(yè)務(wù)規(guī)劃和資源組管理,用戶甚至可以讓某些資源組在低峰期時(shí)釋放所有資源,極大地節(jié)約成本。
3 全新優(yōu)化器框架
近年來(lái),自治(Autonomous)能力已經(jīng)成為數(shù)據(jù)庫(kù)發(fā)展的重要方向和趨勢(shì)。與傳統(tǒng)數(shù)據(jù)庫(kù)相比,云數(shù)據(jù)庫(kù)提供一站式托管服務(wù),也對(duì)自治能力提出了更高的要求。為此,AnalyticDB 研發(fā)了全新的優(yōu)化器架構(gòu),向更加智能化的自治數(shù)據(jù)庫(kù)方向邁進(jìn),為用戶帶來(lái)更好的體驗(yàn)。
AnalyticDB 優(yōu)化器進(jìn)行了大面積的重構(gòu)升級(jí),主體上拆分成 RBO (Rule-based optimizer) 和 CBO (Cost-based optimizer)。RBO 負(fù)責(zé)做確定性的優(yōu)化。比如,將過(guò)濾條件盡可能下推,以減少后續(xù)算子的運(yùn)算量。CBO 負(fù)責(zé)做不確定性的優(yōu)化。比如,調(diào)整 JOIN 運(yùn)算的順序。調(diào)整的收益是不確定的,所以需要通過(guò)代估模塊來(lái)決策。為了讓這兩大模塊更好的工作,給予用戶更好的體驗(yàn),AnalyticDB 引入了全新的四大特性。
特性1:Histogram
直方圖的引入,可以有效提升代估的質(zhì)量,讓 CBO 選出更好的計(jì)劃。直方圖可以有效解決用戶數(shù)據(jù)值的分布不均問(wèn)題,有效解決代估中“均勻分布假設(shè)”問(wèn)題。為了驗(yàn)證直方圖效果,AnalyticDB還構(gòu)建了一套代估質(zhì)量評(píng)價(jià)系統(tǒng)。在灰度實(shí)例中,代估綜合錯(cuò)誤率降幅可達(dá)50%以上。
特性2:Autonomous statistics
如何管理好表的統(tǒng)計(jì)信息,也是一個(gè)非常頭疼的問(wèn)題。如果把這個(gè)問(wèn)題拋給用戶,讓用戶執(zhí)行命令去收集統(tǒng)計(jì)信息,會(huì)給用戶帶來(lái)巨大的困擾。為此,AnalyticDB引入了統(tǒng)計(jì)信息自治框架,來(lái)管理這個(gè)事情。AnalyticDB會(huì)盡可能降低收集動(dòng)作對(duì)用戶的影響,帶來(lái)最好的體驗(yàn)。AnalyticDB會(huì)識(shí)別出每一列需要收集的統(tǒng)計(jì)信息等級(jí),不同等級(jí)收集開銷不同。同時(shí)也會(huì)識(shí)別出統(tǒng)計(jì)信息是否過(guò)期,來(lái)決定是否要重新收集。
特性3:Incremental statistics
傳統(tǒng)的統(tǒng)計(jì)信息收集方式,需要進(jìn)行全表掃描。全表掃描開銷大,對(duì)用戶影響大,不符合提升用戶體驗(yàn)的初衷。為此,AnalyticDB引入了增量統(tǒng)計(jì)信息框架,可以只更新單個(gè)分區(qū)的統(tǒng)計(jì)信息,然后通過(guò)全局合并技術(shù),得到整個(gè)表全局的統(tǒng)計(jì)信息。這樣可以大幅降低收集的開銷,減少對(duì)用戶的影響。
特性4:Property derivation
如何讓計(jì)劃變得更優(yōu),屬性推導(dǎo)對(duì)此有著重要的意義。它就像電影中的彩蛋,需要你去發(fā)掘。我們通過(guò)這個(gè)特性可以發(fā)掘SQL中隱含的信息,從而進(jìn)一步優(yōu)化計(jì)劃。比如,用戶 SQL 寫了 “A=B” 條件,之后又做了一次 “GROUP BY A,B”,那么其實(shí)是可以簡(jiǎn)化成 “GROUP BY A” 或 “GROUP BY B”。因?yàn)槲覀兺ㄟ^(guò)屬性推導(dǎo),知道了A等價(jià)于B。
4 智能診斷和優(yōu)化
智能診斷
AnalyticDB的智能診斷功能融合邏輯執(zhí)行計(jì)劃和物理執(zhí)行計(jì)劃,從「Query級(jí)別」,「Stage級(jí)別」,「算子級(jí)別」三個(gè)層次診斷分析,幫用戶快速定位問(wèn)題Query、Stage和算子,直接給出直觀的問(wèn)題分析,如數(shù)據(jù)傾斜、索引不高效、條件沒(méi)下推等,并給出對(duì)應(yīng)的調(diào)優(yōu)建議。目前已經(jīng)有20+診斷規(guī)則上線,涉及查詢相關(guān)的內(nèi)存消耗、耗時(shí)、數(shù)據(jù)傾斜、磁盤IO以及執(zhí)行計(jì)劃等多個(gè)方面,后續(xù)還有更多診斷規(guī)則陸續(xù)上線。
智能優(yōu)化
AnalyticDB的智能優(yōu)化功能提供針對(duì)數(shù)據(jù)庫(kù)、表結(jié)構(gòu)的優(yōu)化功能,為用戶提供降低集群使用成本、提高集群使用效率的調(diào)優(yōu)建議。該功能基于SQL查詢的性能指標(biāo)以及使用到的數(shù)據(jù)表、索引等信息進(jìn)行算法統(tǒng)計(jì)分析,自動(dòng)給出調(diào)優(yōu)建議,減少用戶手動(dòng)調(diào)優(yōu)的負(fù)擔(dān)。智能優(yōu)化目前提供三種類型的優(yōu)化建議:
1) 冷熱數(shù)據(jù)優(yōu)化:分析數(shù)據(jù)表的使用情況,對(duì)長(zhǎng)期未使用的數(shù)據(jù)表,建議將其遷移至冷盤存儲(chǔ),約60%的實(shí)例可以通過(guò)該建議的提示,將 15 天未使用的數(shù)據(jù)表移至冷存,節(jié)省 3 成以上的熱存空間;
2)索引優(yōu)化:分析數(shù)據(jù)索引的使用情況,對(duì)長(zhǎng)期未使用的數(shù)據(jù)索引,建議將其刪除,約50%的實(shí)例可以通過(guò)該建議的提示,將 15 天未使用的索引進(jìn)行刪除,節(jié)省 3 成以上的熱存空間;
3)分區(qū)優(yōu)化:分析數(shù)據(jù)查詢實(shí)際需要使用的分布鍵與數(shù)據(jù)表定義的分布列之間的差異,對(duì)設(shè)計(jì)不合理的分布鍵,建議變更該數(shù)據(jù)表的分布鍵,以提高數(shù)據(jù)的查詢性能。
四 總結(jié)和展望
經(jīng)過(guò)多年雙十一的淬煉,AnalyticDB不僅抗住了一年高過(guò)一年的的極端負(fù)載和流量,也在不斷豐富的業(yè)務(wù)場(chǎng)景中逐步成長(zhǎng),不斷賦能到集團(tuán)內(nèi)外各種新老業(yè)務(wù)和場(chǎng)景中,逐步成長(zhǎng)為新一代云原生數(shù)據(jù)倉(cāng)庫(kù)的佼佼者。接下來(lái)AnalyticDB將繼續(xù)以“人人可用的數(shù)據(jù)服務(wù)”為使命,進(jìn)一步擁抱云原生,構(gòu)建數(shù)據(jù)庫(kù)+大數(shù)據(jù)一體化架構(gòu),建設(shè)極致彈性、離在線一體、高性價(jià)比、智能自治等企業(yè)級(jí)能力,進(jìn)一步賦能用戶挖掘數(shù)據(jù)背后的商業(yè)價(jià)值。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?
總結(jié)
以上是生活随笔為你收集整理的云原生数据仓库AnalyticDB支撑双11,大幅提升分析实时性和用户体验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 慢SQL治理分享
- 下一篇: 万物智联时代的终端智能「管家」 重磅升级