復(fù)雜SQL查詢(xún)跑不動(dòng)以及DRDS 只讀的解決方法,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比瀾滄網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式瀾滄網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋瀾滄地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴(lài)。
背景
在實(shí)際業(yè)務(wù)生產(chǎn)環(huán)境中,業(yè)務(wù)應(yīng)用系統(tǒng)在使用 OLTP 數(shù)據(jù)庫(kù)將數(shù)據(jù)進(jìn)行存儲(chǔ)后,均會(huì)存在如后臺(tái)運(yùn)營(yíng)類(lèi)系統(tǒng)進(jìn)行統(tǒng)計(jì)報(bào)表分析等場(chǎng)景的復(fù)雜 SQL 查詢(xún)?cè)V求。
為滿(mǎn)足此類(lèi)復(fù)雜 SQL 查詢(xún)快速響應(yīng)的需求,DRDS 團(tuán)隊(duì)基于第三代分布式SQL引擎,進(jìn)一步引入自研 MPP 多機(jī)并行計(jì)算引擎(Fireworks)及對(duì)應(yīng)的優(yōu)化策略,極大地補(bǔ)強(qiáng)了 DRDS 的復(fù)雜查詢(xún)處理能力。
千萬(wàn)級(jí)數(shù)據(jù)下的分布式多表Join、聚合、排序、子查詢(xún)操作秒級(jí)返回結(jié)果,可極大的提升響應(yīng)速度。自身利用同一份數(shù)據(jù)(RDS只讀)進(jìn)行處理,無(wú)需數(shù)據(jù)同步至其他數(shù)據(jù)源,降低業(yè)務(wù)架構(gòu)整體鏈路復(fù)雜度,節(jié)省業(yè)務(wù)運(yùn)維及預(yù)算成本。
cdn.com/bad94739b4a209f57ac0b01de9d57aeabf467d49.png">
主要特性
自研 MPP 多機(jī)并行計(jì)算引擎 Fireworks
DRDS 只讀實(shí)例搭載了一個(gè)具備完整多機(jī)并行處理能力的 SQL 執(zhí)行引擎(Fireworks)。它與 DRDS 主實(shí)例上搭載的 SQL 執(zhí)行引擎有顯著差異。
DRDS 主實(shí)例的執(zhí)行引擎采用單機(jī)架構(gòu),采取盡可能將計(jì)算下推至底層各物理分庫(kù)執(zhí)行的策略,依靠物理分庫(kù)的計(jì)算能力實(shí)現(xiàn)了邏輯SQL的分布式計(jì)算。
而 DRDS 只讀實(shí)例上搭載的 Fireworks 引擎是一個(gè)由多個(gè)計(jì)算節(jié)點(diǎn)組成的集群,將一個(gè) SQL 查詢(xún)轉(zhuǎn)換為一個(gè)分布式計(jì)算任務(wù),突破下掛
物理庫(kù)計(jì)算能力的限制,大幅提升針對(duì)復(fù)雜邏輯SQL的計(jì)算速度,對(duì) Join、Aggregate 和 Sort 計(jì)算有顯著加速效果。
Fireworks 會(huì)將 Join、Aggregate 和 Sort 這類(lèi)計(jì)算任務(wù)通過(guò) Shuffle 的方式打散并分發(fā)到計(jì)算集群的多個(gè)計(jì)算節(jié)點(diǎn)上,通過(guò)多計(jì)算節(jié)點(diǎn)并行計(jì)算達(dá)到計(jì)算加速的目的。
針對(duì)多機(jī)并行執(zhí)行模式定制打造的優(yōu)化器
原 DRDS 主實(shí)例優(yōu)化器主要側(cè)重 OLTP 場(chǎng)景,核心理念是盡量將一切計(jì)算下推至下掛的物理庫(kù)執(zhí)行。其目的是充分利用物理庫(kù)的計(jì)算資源,同時(shí)可以避免產(chǎn)生大量的數(shù)據(jù)流動(dòng),從而得到較快的響應(yīng)速度。
而當(dāng)面對(duì)涉及較大數(shù)據(jù)量級(jí)下的復(fù)查查詢(xún)場(chǎng)景時(shí),整體性能會(huì)受到下掛物理庫(kù)的限制,同時(shí)也會(huì)對(duì)物理庫(kù)產(chǎn)生較大的壓力從而影響穩(wěn)定性,總體來(lái)看其 OLAP 能力有很多局限性。
在引入了 MPP 多機(jī)并行計(jì)算引擎 Fireworks 之后,DRDS 本身在計(jì)算能力上得到了極大地提升,優(yōu)化器的整體優(yōu)化策略也有所調(diào)整:
盡量將復(fù)雜計(jì)算(如 Join 、Aggregation 、Sort )上提至自身執(zhí)行引擎計(jì)算,通過(guò) Fireworks 計(jì)算集群實(shí)現(xiàn)計(jì)算加速與可擴(kuò)展性;
將輕量級(jí)的計(jì)算(如 Project 、Filter )繼續(xù)下推至至物理庫(kù)從而減少數(shù)據(jù)拉取的成本。
DRDS 分布式 SQL 優(yōu)化器通過(guò)對(duì)執(zhí)行計(jì)劃最細(xì)粒度的優(yōu)化可以產(chǎn)生出對(duì)多機(jī)并行執(zhí)行引擎友好的執(zhí)行計(jì)劃,獲得更好執(zhí)行效率。
同時(shí)提供精細(xì)化算子下推策略,將對(duì) RDS 較小壓力的算子下推至物理庫(kù)取得更高的計(jì)算性?xún)r(jià)比,同時(shí)保護(hù) RDS 免受代價(jià)較大算子的影響,從而保證在線(xiàn)流量的穩(wěn)定性。
基于在線(xiàn)數(shù)據(jù)直接分析
以新零售業(yè)務(wù)為代表的新興互聯(lián)網(wǎng)業(yè)務(wù)不斷涌現(xiàn),這類(lèi)業(yè)務(wù)除了有實(shí)時(shí)的 OLTP 需求,還伴隨著一些有一定復(fù)雜度的準(zhǔn)實(shí)時(shí) OLAP 的需求用以支持實(shí)時(shí)決策等需求。
而目前大多數(shù)的數(shù)據(jù)分析場(chǎng)景的解決方案均需要將 OLTP 數(shù)據(jù)庫(kù)的生產(chǎn)數(shù)據(jù)導(dǎo)出至其他數(shù)據(jù)源進(jìn)行再次離線(xiàn)分析,這種傳統(tǒng)方案很難滿(mǎn)足準(zhǔn)實(shí)時(shí)的需求,同時(shí)在數(shù)據(jù)導(dǎo)出至離線(xiàn)系統(tǒng)時(shí)也存在數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
DRDS 只讀實(shí)例無(wú)需進(jìn)行冗長(zhǎng)繁瑣的數(shù)據(jù)同步任務(wù),基于 RDS 只讀實(shí)例或 RDS 主實(shí)例直接進(jìn)行復(fù)雜數(shù)據(jù)處理,降低業(yè)務(wù)架構(gòu)整體鏈路復(fù)雜度,節(jié)省業(yè)務(wù)運(yùn)維及預(yù)算成本。
DRDS 只讀實(shí)例在避免數(shù)據(jù)同步的同時(shí),可保證數(shù)據(jù)處理時(shí)效性,最高可做到 READ COMMITED 的實(shí)時(shí)性 (基于 RDS 主實(shí)例)。
邊界清晰的 SQL 兼容性
DRDS 只讀實(shí)例全面兼容 DRDS 主實(shí)例的 SQL 查詢(xún)語(yǔ)法,與 DRDS 5.3 版本的 SQL 兼容性和 SQL 支持邊界高度保持一致。
與同類(lèi)產(chǎn)品相比具備兼容性高以及支持邊界清晰的特點(diǎn)??梢蕴峁┡c DRDS 主實(shí)例幾乎一致的體驗(yàn)。
DRDS 主實(shí)例上無(wú)法執(zhí)行或執(zhí)行較慢的復(fù)雜 SQL 可以直接遷移到只讀實(shí)例來(lái)執(zhí)行,免去SQL改寫(xiě)的額外開(kāi)銷(xiāo)。
產(chǎn)品體驗(yàn)靈活自主
DRDS 只讀實(shí)例自動(dòng)同步 DRDS 主實(shí)例的賬號(hào)權(quán)限信息,原生VPC支持,內(nèi)外網(wǎng)可同時(shí)開(kāi)啟,根據(jù)業(yè)務(wù)情況靈活變配,數(shù)據(jù)處理能力線(xiàn)性提升。
技術(shù)架構(gòu)總覽
DRDS 只讀實(shí)例整體架構(gòu)與 DRDS 主實(shí)例基本保持一致,僅在查詢(xún)層有所變化,增加了 MPP 執(zhí)行引擎和對(duì)應(yīng)優(yōu)化器,如下如所示:
DRDS協(xié)議層負(fù)責(zé)處理網(wǎng)絡(luò)交互與 MySQL 協(xié)議的解析,收到查詢(xún)請(qǐng)求后會(huì)將 SQL 轉(zhuǎn)交至查詢(xún)層處理。查詢(xún)層負(fù)責(zé)解析 SQL 并由執(zhí)行器產(chǎn)生經(jīng)過(guò)優(yōu)化的執(zhí)行計(jì)劃,然后交由執(zhí)行引擎到存儲(chǔ)層進(jìn)行查詢(xún)以及計(jì)算。
如果需要使用 Fireworks 引擎計(jì)算,在得到執(zhí)行計(jì)劃之后查詢(xún)層還會(huì)將該執(zhí)行計(jì)劃進(jìn)一步轉(zhuǎn)換為分布式執(zhí)行計(jì)劃并將其作為分布式任務(wù)提交給 Fireworks Cluster。由遠(yuǎn)端的 Fireworks 集群完成到存儲(chǔ)層進(jìn)行數(shù)據(jù)查詢(xún)以及后續(xù)計(jì)算的工作。
簡(jiǎn)單來(lái)說(shuō),DRDS 只讀實(shí)例可以認(rèn)為是在原 DRDS 基礎(chǔ)上增加了一條具備多機(jī)并行處理能力的執(zhí)行鏈路。
適用場(chǎng)景
總體來(lái)說(shuō) DRDS 只讀實(shí)例適用于處理低并發(fā)高延遲的大數(shù)據(jù)量級(jí)下的復(fù)雜查詢(xún)。如數(shù)據(jù)分析及報(bào)表類(lèi)場(chǎng)景,該類(lèi)場(chǎng)景的典型特征為含有大
量的關(guān)聯(lián)、聚合及排序操作且參與計(jì)算的數(shù)據(jù)規(guī)模較大。
目前 DRDS 只讀實(shí)例在阿里集團(tuán)內(nèi)部已經(jīng)落地了多個(gè)業(yè)務(wù),其中最具代表性的當(dāng)屬盒馬、商業(yè)大腦等新零售場(chǎng)景。圍繞人、貨、場(chǎng)、倉(cāng)多個(gè)維度進(jìn)行關(guān)聯(lián)分析,對(duì)分散在不同邏輯庫(kù)的幾張甚至十幾張邏輯表進(jìn)行關(guān)聯(lián)然后再聚合、排序以滿(mǎn)足庫(kù)存對(duì)賬、決策支持等業(yè)務(wù)上的需求。
DRDS 只讀實(shí)例的出現(xiàn)使業(yè)務(wù)開(kāi)發(fā)同學(xué)不再需要配置、維護(hù)數(shù)量繁多的數(shù)據(jù)同步鏈路,不用擔(dān)心因數(shù)據(jù)不同步而造成的結(jié)果時(shí)效性差或不準(zhǔn)確等問(wèn)題,一定程度上減輕了開(kāi)發(fā)同學(xué)的工作負(fù)擔(dān)。
對(duì)于已經(jīng)在使用 DRDS 的用戶(hù)來(lái)說(shuō),DRDS 只讀實(shí)例可以解決如下兩類(lèi)已知問(wèn)題:
在使用 DRDS 過(guò)程中可能會(huì)發(fā)現(xiàn)某一些涉及Join、聚合、排序的復(fù)雜 SQL因?yàn)椴荒芡耆峦贫枰贒RDS執(zhí)行引擎中進(jìn)行二次計(jì)算,而這種計(jì)算因?yàn)槭艿絾螜C(jī)執(zhí)行引擎在內(nèi)存方面的限制而無(wú)法執(zhí)行。
SQL 的復(fù)雜計(jì)算部分可以下推但是涉及到的數(shù)據(jù)規(guī)模較大造成物理庫(kù)壓力增高影響 OLTP 業(yè)務(wù)或者響應(yīng)時(shí)間過(guò)慢達(dá)不到要求。
小結(jié)
長(zhǎng)期以來(lái) DRDS 受到單機(jī)架構(gòu)執(zhí)行引擎的限制一直無(wú)法對(duì)基于大數(shù)據(jù)規(guī)模的復(fù)雜查詢(xún)提供很好的支持,也無(wú)法通過(guò)擴(kuò)展物理資源來(lái)實(shí)現(xiàn)對(duì)自身本地計(jì)算能力的線(xiàn)性擴(kuò)展。
DRDS只讀實(shí)例的推出徹底地彌補(bǔ)了 DRDS 在 OLAP 場(chǎng)景下的短板,使得 DRDS 在提供強(qiáng)大 OLTP 能力的同時(shí)提供可擴(kuò)展的 OLAP 能力,為同時(shí)具有 OLTP 需求與中等規(guī)模數(shù)據(jù)分析需求的用戶(hù)提供了一站式整體解決方案,為用戶(hù)帶來(lái)便利。
后續(xù)半年時(shí)間內(nèi) DRDS 只讀實(shí)例將發(fā)布跨邏輯庫(kù)的關(guān)聯(lián)查詢(xún)功能,并通過(guò)更多的技術(shù)手段,不斷增強(qiáng)只讀實(shí)例核心能力,在并發(fā)度、響應(yīng)時(shí)間、數(shù)據(jù)量、交互式查詢(xún)等方面將擁有更好的表現(xiàn),滿(mǎn)足企業(yè)級(jí)應(yīng)用對(duì)數(shù)據(jù)庫(kù)的嚴(yán)苛要求。
目前 DRDS 只讀實(shí)例與 DRDS 主實(shí)例同享8折限時(shí)優(yōu)惠,活動(dòng)詳情
https://promotion.aliyun.com/ntms/act/drdsreadonlydisc.html
歡迎大家持續(xù)關(guān)注 DRDS(阿里云分布式關(guān)系型數(shù)據(jù)庫(kù)服務(wù)),產(chǎn)品詳情
https://www.aliyun.com/product/drds
關(guān)于復(fù)雜SQL查詢(xún)跑不動(dòng)以及DRDS 只讀的解決方法問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。