|
分析平臺(tái)性能優(yōu)化-緩存預(yù)熱 對(duì)于一些固化的看數(shù)場(chǎng)景,例如看板場(chǎng)景,提前把看板數(shù)據(jù)或圖表查詢放到緩存中,當(dāng)用戶使用時(shí),直接從緩存取數(shù)據(jù),這樣不管原始查詢的數(shù)據(jù)量有多大,直接讀緩存的性能一定是很高效的。 緩存預(yù)熱能力構(gòu)建主要是四部分,預(yù)熱觸發(fā)器、預(yù)熱計(jì)算器、預(yù)熱執(zhí)行器、預(yù)熱監(jiān)控。 預(yù)熱觸發(fā)器判斷什么情況下需要做緩存預(yù)熱。比如定時(shí)調(diào)度,在用戶高峰使用期,提前進(jìn)行緩存預(yù)熱。另外,進(jìn)行數(shù)據(jù)加速的同時(shí),也要保障數(shù)據(jù)質(zhì)量。 預(yù)熱計(jì)算器,計(jì)算歷史的哪些查詢、哪些圖表,是值得預(yù)熱、有價(jià)值的。通過(guò)觀察數(shù)據(jù)集的血緣,來(lái)知道數(shù)據(jù)是離線生產(chǎn)的還是實(shí)時(shí)生產(chǎn)的,很顯然實(shí)時(shí)生產(chǎn)的數(shù)據(jù)不適合做預(yù)熱。另外,對(duì)于一些固定化的、高熱的圖表做預(yù)熱。最終計(jì)算到,想要預(yù)熱的是哪些圖表,或者哪些用戶歷史查詢。 圖片 因?yàn)轭A(yù)熱執(zhí)行器預(yù)熱的量可能很大,考慮到對(duì)服務(wù)負(fù)載,要加入一些并發(fā)控制,最后把預(yù)熱的數(shù)據(jù)放到緩存中。 最后是預(yù)熱的監(jiān)控,監(jiān)控緩存預(yù)熱的執(zhí)行情況,執(zhí)行耗時(shí)以及緩存預(yù)熱的緩存命中率。經(jīng)過(guò)緩存預(yù)熱建設(shè),可視化看板場(chǎng)景的首屏命中率可達(dá)到 90%,非首屏的緩存命中率達(dá)到了 30%。 分析平臺(tái)性能優(yōu)化-查詢優(yōu)化 查詢的優(yōu)化首先會(huì)基于快手開(kāi)放分析表達(dá)式 OAX(快手面向分析場(chǎng)景的統(tǒng)一分析語(yǔ)言,上述所有分析場(chǎng)景都基于 OAX 構(gòu)建)。即將用戶最終的數(shù)據(jù)分析抽象成 OAX 語(yǔ)言,并對(duì)此 OAX 語(yǔ)言進(jìn)行解析,知道用戶有哪些高級(jí)計(jì)算,以及哪些是基于模型或者基于物理表的計(jì)算,然后會(huì)進(jìn)行一些初級(jí)的分析編排。 接著進(jìn)行 AST 優(yōu)化。AST 的葉子節(jié)點(diǎn)是從引擎來(lái)讀取數(shù)據(jù),但是對(duì)于分析平臺(tái)來(lái)說(shuō),有的是面向表,有的是面向模型(基于表與表之間的關(guān)系,構(gòu)建模型)。一個(gè)數(shù)據(jù)集可以有多個(gè)模型,一個(gè)指標(biāo)在多個(gè)模型中都可以支持。其中會(huì)進(jìn)行模型搜索的優(yōu)化,以保障選取的表或模型,是數(shù)據(jù)準(zhǔn)確的,同時(shí)保障選取的模型,其取數(shù)效率是最優(yōu)的。取到既滿足準(zhǔn)確性,又高效率的一個(gè)模型。 圖片 有了模型后,會(huì)把這個(gè)模型翻譯成引擎的查詢語(yǔ)言,并在翻譯中,做一些通用的或者 Native 的 SQL 優(yōu)化。 當(dāng)葉子節(jié)點(diǎn)也是面向引擎的 SQL 的時(shí)候,AST 就可以真正的物理編排,物理編排后就可以執(zhí)行了。 快手在查詢優(yōu)化過(guò)程中,沉淀了 50 多個(gè)通用的 & Native 優(yōu)化規(guī)則包括: 復(fù)雜分析查詢下推:占比或者同環(huán)比這些復(fù)雜分析,盡量轉(zhuǎn)換成一個(gè)完整的 SQL 下推執(zhí)行; 謂詞下推; 聚合算子優(yōu)化; JOIN 順序調(diào)整。 我是一位愛(ài)學(xué)習(xí)的老人!本站主要是些學(xué)習(xí)體驗(yàn)與分享(其中會(huì)引用一些作品的原話并結(jié)合我的一生體會(huì)與經(jīng)驗(yàn)加工整理而成!在此一并感謝!如有不妥之處敬請(qǐng)與我聯(lián)系,我會(huì)妥善處理,謝謝!)我寫(xiě)的主要是中老年人各方面應(yīng)注意的事兒!退休后我希望通過(guò)這個(gè)平臺(tái)廣交朋友,互助交流,共筑美好生活?。。。。?! 更多文章請(qǐng)參看http://www.趙站長(zhǎng)的博客。期待大家的光臨與指教哦^0^!歡迎大家轉(zhuǎn)發(fā)! |
|
|