性能調(diào)優(yōu)

????性能調(diào)優(yōu)既可以體現(xiàn)在單一SQL,或單一作業(yè)疑苫、腳本的調(diào)優(yōu)熏版,也可以體現(xiàn)在整體系統(tǒng)的調(diào)整纷责。性能調(diào)優(yōu)是最具綜合能力的體現(xiàn),通常對(duì)一個(gè)技術(shù)點(diǎn)了解越深入撼短,就越容易解決單點(diǎn)問題再膳;知識(shí)面越寬,就能更大范圍的定位問題曲横,也會(huì)有更多的手段進(jìn)行調(diào)優(yōu)喂柒。

? ? 站在DBA的角度,對(duì)于一個(gè)SQL語句的調(diào)優(yōu)禾嫉,通常會(huì)首先從執(zhí)行計(jì)劃開始分析和定位問題灾杰,常見手段包括:確定索引類型并添加合適的索引,刷新表統(tǒng)計(jì)信息(執(zhí)行計(jì)劃更準(zhǔn)確)熙参,重寫SQL(先縮小數(shù)據(jù)范圍艳吠,再進(jìn)行統(tǒng)計(jì);關(guān)聯(lián)查詢時(shí)孽椰,考慮是否命中PK, Index昭娩;多表關(guān)聯(lián)時(shí),考慮join的大小順序黍匾;使用join代替子查詢栏渺;exist代替in等。)锐涯,使用物化試圖(預(yù)查詢小數(shù)據(jù)集)磕诊,調(diào)整數(shù)據(jù)庫參數(shù),例如CPU全庸,內(nèi)存,連接數(shù)等參數(shù)壶笼,調(diào)整并發(fā)度覆劈。使用audit表監(jiān)控最耗時(shí)SQL,使用頻率最高的SQL炮障,使用緩存坤候,使用表分區(qū)減少對(duì)全表的掃描。參數(shù)有參考經(jīng)驗(yàn)值智末,但最終通過試驗(yàn)確定。

????對(duì)分布式數(shù)據(jù)庫來說送漠,核心思想是分而治之闽寡,數(shù)據(jù)平分尼酿,減少shuffle, 內(nèi)存為主,減少落地淆院。所以在考慮數(shù)據(jù)分片句惯,分桶抢野、分區(qū)鍵的定義上各墨,需要考慮如何平分?jǐn)?shù)據(jù),減少數(shù)據(jù)偏斜恃轩;考慮join多表時(shí)的大小順序叉跛,減少磁盤swap或落地蒸殿;調(diào)整參數(shù)盡量充分利用硬件資源。

????在硬件層面酥艳,需要監(jiān)控CPU爬骤,內(nèi)存,IO骤铃,網(wǎng)絡(luò)的變化。確定是否有硬件瓶頸膛薛,或者資源是否充分利用补鼻。CPU方面,需要考慮CPU核心數(shù)與并發(fā)作業(yè)的比例咨跌;內(nèi)存通常越大越好硼婿,一般根據(jù)應(yīng)用特性,CPU與內(nèi)存有一定的配比關(guān)系寇漫。例如普通形的CPU內(nèi)存比例為1:2州胳, 內(nèi)存型的為1:4. 例如16核:32G,或者16核:64G遍膜。 對(duì)高IO需求的部分瓢颅,分配存儲(chǔ)到SSD,內(nèi)存虛擬磁盤等存儲(chǔ)或表空間挽懦,以提高IO巾兆。 網(wǎng)絡(luò)方面虎囚,越底層的協(xié)議效率越高;一次打包多條數(shù)據(jù)圃伶,用批量代替單條處理,減少協(xié)議頭占比以減少不必要消耗搀罢;數(shù)據(jù)量大量交換時(shí)榔至,可以考慮啟動(dòng)數(shù)據(jù)庫的數(shù)據(jù)壓縮功能以減小數(shù)據(jù)傳輸開銷(此方案會(huì)有一定的CPU額外開銷)欺劳,對(duì)文件來說可以采用壓縮格式進(jìn)行傳輸。

????如果對(duì)需求和模型比較熟悉枫弟,考可以調(diào)整模型例如寬表以減少join操作鹏往;使用星形模型進(jìn)行支撐OLAP分析伊履,支持即席查詢;使用立方體湾碎,或類似概念(StarRocks的Aggregate table)和技術(shù)(cognos powercube, kylin, MT1內(nèi)存Cube等)介褥,在各個(gè)緯度上進(jìn)行預(yù)聚合柔滔;在度量值的設(shè)計(jì)上睛廊,進(jìn)行提前計(jì)算(例如提前計(jì)算好YTM, YTQ, YTY, 同比, 環(huán)比等指標(biāo);需求上超全,還可以考慮是否可能把握核心訴求嘶朱,簡(jiǎn)化問題和流程光酣;

????程序的寫法上,算法的優(yōu)化對(duì)效率提升最高财异,通常是數(shù)量級(jí)的提升戳寸。例如計(jì)算1億以內(nèi)包含7的數(shù)字,如果用算法挑選7的數(shù)字疫鹊,就比簡(jiǎn)單粗暴的循環(huán)判斷效率高得多;對(duì)于存儲(chǔ)過程虏辫,應(yīng)用程序或者腳本锈拨,都需要盡量避免循環(huán)。例如娄昆,存儲(chǔ)過程避免cursor循環(huán)萌焰,應(yīng)用程序避免多重循環(huán)嵌套谷浅,腳本避免循環(huán)IO讀寫;矩陣運(yùn)算撼玄,又稱矢量化運(yùn)算掌猛,效率比循環(huán)計(jì)算高得多眉睹。當(dāng)今AI框架的實(shí)現(xiàn)上竹海,例如tensor flow,R等語言坊萝,多數(shù)已經(jīng)采用矢量計(jì)算方式十偶;循環(huán)通常又比遞歸效率更高;

????從架構(gòu)上接校,可以規(guī)劃數(shù)據(jù)實(shí)時(shí)數(shù)據(jù)處理鏈路蛛勉,如CDC诽凌, Flink等坦敌,減少數(shù)據(jù)處理的等待時(shí)間;ES, Solr等工具加速全文檢索杜顺;架構(gòu)層次劃分上躬络,合理分層搭儒,縮短數(shù)據(jù)鏈路,減少作業(yè)量仗嗦。模型上稀拐,降低依賴度德撬,增加并行度蜓洪÷√矗基于分析或查詢提供相應(yīng)的數(shù)據(jù)模型恐仑,例如寬表或星形模型。ETL上腕让,減少?gòu)?fù)雜度纯丸,增量?jī)?yōu)于全量觉鼻。開發(fā)上坠陈,充分利用內(nèi)存喘帚,例如Spark, Redis吹由,數(shù)據(jù)庫緩存等工具減少數(shù)據(jù)落地倾鲫,提升效率乌昔。調(diào)度上磕道,錯(cuò)峰使用以上資源避免堵塞供屉,但提高并發(fā)度,增加整體資源使用的密集度溺蕉,避免空閑伶丐。

????當(dāng)資源明顯不夠時(shí),根據(jù)實(shí)際情況和資源成本疯特,考慮橫向擴(kuò)展哗魂,或者垂直擴(kuò)展。 例如大數(shù)據(jù)服務(wù)待機(jī)狀態(tài)就已經(jīng)超過40%的內(nèi)存內(nèi)存占用率漓雅,就更應(yīng)該進(jìn)行垂直擴(kuò)展录别。

? ? 云計(jì)算平臺(tái)情況下朽色,通過云平臺(tái)核心網(wǎng)或接入點(diǎn),提高網(wǎng)絡(luò)傳輸效率组题;利用全球統(tǒng)一域名接入, 本地客戶從本地接入葫男,加快訪問;利用CDN內(nèi)容分發(fā)往踢,進(jìn)行跨地域的內(nèi)容加速利职。使用PaaS數(shù)據(jù)庫的只讀副本能力,提高讀性能和跨地域數(shù)據(jù)讀性能。

? ? 總的來說桶癣,調(diào)優(yōu)以實(shí)際情況為導(dǎo)向,具體問題具體分析,手段不一而足惹挟;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萎庭,一起剝皮案震驚了整個(gè)濱河市署海,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踱启,老刑警劉巖榜晦,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斩郎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刀脏,你說我怎么就攤上這事∈鬃埃” “怎么了涧尿?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵瞬内,是天一觀的道長(zhǎng)能真。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮丘损,結(jié)果婚禮上肢娘,老公的妹妹穿的比我還像新娘。我一直安慰自己珊皿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钠乏。 梳的紋絲不亂的頭發(fā)上暑塑,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天谁鳍,我揣著相機(jī)與錄音窍荧,去河邊找鬼恨憎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛屿附,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播褒翰,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼抡医,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼搁嗓!你這毒婦竟也來了够委?” 一聲冷哼從身側(cè)響起铁追,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤琅束,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后算谈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涩禀,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年濒生,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了埋泵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖丽声,靈堂內(nèi)的尸體忽然破棺而出礁蔗,到底是詐尸還是另有隱情,我是刑警寧澤雁社,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布浴井,位于F島的核電站,受9級(jí)特大地震影響霉撵,放射性物質(zhì)發(fā)生泄漏磺浙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一徒坡、第九天 我趴在偏房一處隱蔽的房頂上張望撕氧。 院中可真熱鬧,春花似錦喇完、人聲如沸伦泥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽不脯。三九已至,卻和暖如春刻诊,著一層夾襖步出監(jiān)牢的瞬間防楷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工则涯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留复局,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓是整,卻偏偏與公主長(zhǎng)得像肖揣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浮入,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容