GaussDB(DWS)工作負載管理實戰(zhàn)

      網(wǎng)友投稿 920 2025-03-31

      一、?? 場景介紹

      當(dāng)有多個數(shù)據(jù)庫用戶同時在DWS上執(zhí)行SQL作業(yè)時,可能出現(xiàn)以下情況:

      1. 一些復(fù)雜SQL可能會長時間占用集群資源,從而影響其他查詢的性能。例如一組數(shù)據(jù)庫用戶不斷提交復(fù)雜、耗時的查詢,而另一組用戶經(jīng)常提交短查詢。在這種情況下,短時查詢可能不得不在隊列中等待耗時查詢完成。

      2. 一些SQL由于數(shù)據(jù)傾斜、執(zhí)行計劃未調(diào)優(yōu)等原因,占用過多內(nèi)存空間,導(dǎo)致其他語句因申請不到內(nèi)存而報錯,或占用過多磁盤空間,導(dǎo)致磁盤滿而觸發(fā)集群只讀,無法進行寫入。

      為了提高系統(tǒng)整體吞吐量,避免壞SQL影響系統(tǒng)整體運行,可以使用DWS工作負載管理功能處理這類問題,DWS工作負載管理以工作負載隊列為資源承載,對于不同的業(yè)務(wù)類型可以創(chuàng)建不同的工作負載隊列,為這些隊列配置不同的資源占比,然后將數(shù)據(jù)庫用戶添加至對應(yīng)的隊列中,以此來限制這些數(shù)據(jù)庫用戶的資源使用。例如,將經(jīng)常提交復(fù)雜查詢作業(yè)的數(shù)據(jù)庫用戶分為一類,為這類用戶創(chuàng)建一個工作負載隊列并給這個隊列分配多一些的資源,之后將這類用戶添加至這個隊列中,那么這類用戶所提交的復(fù)雜作業(yè)只能使用所創(chuàng)建隊列擁有的資源;同時再創(chuàng)建一個占用資源較少的隊列分配給執(zhí)行短查詢的用戶使用,這樣兩種作業(yè)就能夠同時執(zhí)行互不影響。

      二、?? 框架介紹

      在實際業(yè)務(wù)運行中,系統(tǒng)壓力可能集中在集群中的一部分節(jié)點或者系統(tǒng)資源中的某項資源,導(dǎo)致系統(tǒng)資源不能充分利用,集群性能不能充分發(fā)揮。因此,GaussDB(DWS)提供了基于用戶資源池的資源管理功能,將不同類型的作業(yè)關(guān)聯(lián)到不同的資源池分別管理,以實現(xiàn)系統(tǒng)資源(并發(fā)、CPU、內(nèi)存、存儲空間)的隔離和作業(yè)的異常處理,避免發(fā)生資源的不合理占用。

      工作負載管理支持配置的隊列資源包含:并發(fā)、內(nèi)存、CPU及磁盤空間,關(guān)聯(lián)該隊列的用戶執(zhí)行的所有作業(yè)均受隊列資源限制。總體架構(gòu)如下:

      三、?? 配置指南

      (一)??????? 頁面基本操作

      1.?????? 進入工作負載管理

      步驟1:登錄華為云或HCS首頁,選擇數(shù)據(jù)倉庫服務(wù)跳轉(zhuǎn)到DWS管理控制臺。

      步驟2:在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱,例如DWS_openlab。

      步驟3:切換至“工作負載管理”頁簽。

      在工作負載管理頁面,您可以修改工作負載管理的全局配置,可以在工作負載管理頁面添加、創(chuàng)建、修改工作負載隊列,添加數(shù)據(jù)庫用戶至隊列,也可以將隊列中的某個數(shù)據(jù)庫用戶從隊列中移除。負載管理頁面添加、創(chuàng)建、修改工作負載隊列,添加數(shù)據(jù)庫用戶至隊列,也可以將隊列中的某個數(shù)據(jù)庫用戶從隊列中移除。此外,最新版本的DWS還支持工作負載隊列資源的動態(tài)調(diào)整,用戶可以指定任務(wù)計劃,在不同時間段內(nèi)為隊列分配不同資源,來最大程度的利用系統(tǒng)資源。具體可見最佳實踐案例二。

      工作負載管理頁面概覽如下。

      ----結(jié)束

      2.????? 打開或關(guān)閉工作負載管理

      工作負載管理配置包括工作負載開關(guān)、全局最大并發(fā)數(shù)。這里的全局最大并發(fā)數(shù)指的是單個CN上的最大并發(fā)數(shù),如果您通過工作負載開關(guān)關(guān)閉了工作負載管理功能,那么所有的工作負載管理功能將不再可用。

      3.????? 資源配置

      在“資源配置”一欄,您可以瀏覽當(dāng)前工作負載隊列的資源配置情況,包括“CPU資源(%)”、“內(nèi)存資源(%)”、“存儲資源(MB)”、“查詢并發(fā)”。

      4.????? 設(shè)置異常規(guī)則

      在“異常規(guī)則”一欄,您可以瀏覽當(dāng)前工作負載隊列中的異常規(guī)則設(shè)置情況,異常規(guī)則允許您對隊列中用戶執(zhí)行的作業(yè)做異??刂?。

      5.????? 關(guān)聯(lián)用戶

      在“關(guān)聯(lián)用戶”一欄,您可以瀏覽當(dāng)前工作負載隊列中已關(guān)聯(lián)的用戶,且可以看到當(dāng)前時間每個用戶已使用的內(nèi)存以及磁盤使用量,如下圖所示。

      (二)??????? 添加工作負載隊列

      步驟1: 登錄DWS管理控制臺。

      步驟2: 在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱。

      步驟3: 切換至“工作負載管理”頁簽。

      步驟4: 單擊工作負載隊列旁的“+”符號添加隊列。

      步驟5: 參見表1-1填寫工作負載隊列的名稱和相關(guān)資源配置。

      參數(shù)項

      描述

      取值

      名稱

      工作負載隊列的名稱。

      queue_test

      CPU資源(%)

      隊列中的數(shù)據(jù)庫用戶在執(zhí)行作業(yè)時可使用的CPU時間片比例。

      20

      內(nèi)存資源(%)

      隊列所占用的內(nèi)存百分比。

      注意:當(dāng)前版本的“內(nèi)存資源(%)”與“查詢并發(fā)”只有一個生效。

      20

      儲存資源(MB)

      可使用的永久表空間大小。

      1024

      查詢并發(fā)

      隊列中的最大查詢并發(fā)數(shù)。

      注意:當(dāng)前版本的“內(nèi)存資源(%)”與“查詢并發(fā)”只有一個生效。

      10

      顯示添加工作負載隊列:

      步驟6: 核對信息后,單擊“確定”,添加隊列完成。

      ----結(jié)束

      (三)??????? 修改工作負載隊列

      在工作負載隊列中,您可以對某個工作負載隊列的參數(shù)進行修改。

      步驟1: 登錄DWS管理控制臺。

      步驟2: 在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱。

      步驟3: 切換至“工作負載管理”頁簽。

      步驟4: 在左側(cè)“工作負載隊列”中單擊需要修改的隊列名稱,出現(xiàn)如下頁面,包括“短查詢配置”、“資源配置”、“異常規(guī)則”、“關(guān)聯(lián)用戶”。

      步驟5: 修改短查詢配置。修改為相應(yīng)取值,單擊右側(cè)“保存”。

      如果集群中運行的是查詢業(yè)務(wù),或查詢跑批混合業(yè)務(wù),建議開啟短查詢加速,并根據(jù)當(dāng)前隊列在每個CN上可能運行的最大短查詢并發(fā)數(shù)來設(shè)置短查詢并發(fā)。這樣,在系統(tǒng)中占用內(nèi)存小于32MB的短查詢將會單獨排隊運行,不和跑批復(fù)雜查詢一起排隊,加快短查詢響應(yīng)速度。

      參數(shù)項

      描述

      取值

      短查詢加速

      短查詢加速開關(guān),默認打開

      打開

      短查詢并發(fā)

      短查詢作業(yè)為執(zhí)行估算內(nèi)存小于32MB的查詢作業(yè),默認值"1"表示不管控。

      10

      配置完成后點擊保存:

      步驟6: 修改資源配置。

      1、單擊右側(cè)“編輯”,參見下表修改相應(yīng)參數(shù)。

      參數(shù)項

      描述

      取值

      名稱

      工作負載隊列的名稱。

      queue_test

      CPU資源(%)

      隊列中的數(shù)據(jù)庫用戶在執(zhí)行作業(yè)時可使用的CPU時間片比例。

      20

      內(nèi)存資源(%)

      隊列所占用的內(nèi)存百分比。

      注意:當(dāng)前版本的“內(nèi)存資源(%)”與“查詢并發(fā)”只有一個生效。

      20

      儲存資源MB)

      可使用的永久表空間大小。

      1024

      查詢并發(fā)

      隊列中的最大查詢并發(fā)數(shù)。

      注意:當(dāng)前版本的“內(nèi)存資源(%)”與“查詢并發(fā)”只有一個生效。

      10

      2、單擊“確定”。

      步驟7: 修改異常規(guī)則。

      (1)參見表1-3修改相應(yīng)參數(shù)。

      說明:異常規(guī)則允許您對隊列中用戶執(zhí)行的作業(yè)做異??刂疲壳爸С窒卤淼南嚓P(guān)配置。

      – 如選擇“終止”,則需要設(shè)置相應(yīng)時間。

      – 如選擇“不約束”,則無異常規(guī)則約束。

      參數(shù)項

      描述

      取值

      阻塞時間

      作業(yè)的阻塞時間,單位秒。包括全局并發(fā)排隊以及局部并發(fā)排隊的總時間。例如,如果配置“阻塞時間”為300秒,那么當(dāng)該隊列中的用戶執(zhí)行的某個作業(yè)在阻塞300秒后將會被殺死。

      1200

      執(zhí)行所消耗時間

      作業(yè)的已被執(zhí)行時間,單位秒。從開始執(zhí)行到當(dāng)前所消耗的時間。

      例如,如果配置“執(zhí)行所消耗時間”為100秒,那么當(dāng)該隊列中的用戶執(zhí)行的某個作業(yè)在執(zhí)行超過100秒后將被殺死。

      2400

      所有DN上CPU總時間

      作業(yè)在所有DN上執(zhí)行時所耗費的CPU總時間,單位秒。

      100

      檢查傾斜率的時間間隔

      檢查作業(yè)執(zhí)行CPU傾斜率的間隔時間,單位秒,需同“所有DN上CPU時間的傾斜率”一起設(shè)置。

      2400

      所有DN上CPU總時間傾斜率

      作業(yè)在DN上執(zhí)行時的CPU時間的傾斜率,依賴于“檢查傾斜率的時間間隔”的設(shè)置。

      90

      (2)單擊“保存”。

      步驟8: 關(guān)聯(lián)用戶。

      說明:

      ● 一個數(shù)據(jù)庫用戶只有被添加到某個隊列中之后,該用戶運行作業(yè)所使用的資源才能被管控。

      ● 一個數(shù)據(jù)庫用戶只能被添加至一個隊列中,從隊列中移除的用戶可以再次添加至其他隊列。

      (1) 單擊右側(cè)“添加”。

      (2)從當(dāng)前用戶列表中,勾選需要添加的用戶,一次可勾選多個。

      (3)單擊“確定”。

      (4)如果需要刪除用戶,則單擊待刪除用戶所在行右邊的“刪除”即可。

      ----結(jié)束

      (四)??????? 查詢概覽

      步驟1: 登錄DWS管理控制臺。

      步驟2: 在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱。

      步驟3: 切換至“工作負載管理”頁簽。

      步驟4: 在左側(cè)“工作負載隊列”中單擊需要查看的隊列名稱。

      在“查詢概覽”區(qū)域:可以看到當(dāng)前時間當(dāng)前隊列中正在運行的長短查詢數(shù),圖表信息15秒刷新一次。

      ----結(jié)束

      (五)??????? 刪除工作負載隊列

      步驟1: 登錄DWS管理控制臺。

      步驟2: 在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱。

      步驟3: 切換至“工作負載管理”頁簽。

      步驟4: 在左側(cè)“工作負載隊列”中單擊需要刪除的隊列名稱。

      步驟5: 單擊右側(cè)的“刪除”。

      說明:刪除隊列時如果隊列中有關(guān)聯(lián)的數(shù)據(jù)庫用戶,那么隊列刪除后這些用戶將被關(guān)聯(lián)默認隊列。

      (六)??????? 資源限制相關(guān)參數(shù)

      除了頁面提供的工作負載管理功能外,DWS也提供了一些guc參數(shù),來限制單語句占用的最大資源,避免單個語句占用過多資源,導(dǎo)致系統(tǒng)不可用。

      1.?????? query_max_memory: 限制單語句在單DN上占用的最大內(nèi)存量,如單語句分配內(nèi)存超過這個值,將進行報錯,將內(nèi)存歸還給系統(tǒng)。建議按如下方法配置:

      1)? 登陸任意CN查詢:execute direct on (dn_1) 'select * from pg_total_memory_detail where memorytype = ''max_dynamic_memory''';查出來的值即為單個DN上所有SQL可以使用的總內(nèi)存。

      2)? 建議根據(jù)業(yè)務(wù)并發(fā)數(shù),將query_max_memory設(shè)置為上步查出總內(nèi)存的1/2, 1/3,假設(shè)系統(tǒng)表發(fā)數(shù)較小(<20),可設(shè)置為1/2, 如為中大并發(fā)(>20),可設(shè)置為1/3。

      2.? ? ?sql_use_spacelimit:限制單語句在單個DN上最大插入的數(shù)據(jù)量大小,如單語句在單個DN上插入數(shù)據(jù)量超過這個值,將進行報錯,避免單個SQL在單個DN上插入的數(shù)據(jù)量過大,造成DN嚴重傾斜,導(dǎo)致性能差,及磁盤滿問題。建議此參數(shù)設(shè)置為單DN可用總空間的1/5。

      ----結(jié)束

      四、?? 最佳實踐

      以下以兩個實踐案例來說明工作負載管理的實際應(yīng)用。其中案例一為XX財政工作負載管理配置,可以作為小規(guī)模集群(一般小于50節(jié)點)混合業(yè)務(wù)場景下的配置參考。案例二為XX銀行工作負載管理配置,可以作為中大規(guī)模集群聯(lián)機查詢和復(fù)雜跑批混合業(yè)務(wù)場景下的配置參考。注意其中的配置指標值均為根據(jù)具體業(yè)務(wù)要求而定,實施時需要根據(jù)現(xiàn)場實際需求確定。

      (一)??? 小規(guī)模集群:XX財政工作負載管理規(guī)劃

      XX財政業(yè)務(wù)場景主要分為聯(lián)機交易(OLTP)和報表分析(OLAP)兩大類,其中報表服務(wù)的優(yōu)先級相對較低,在合理的情況下優(yōu)先保障業(yè)務(wù)系統(tǒng)的正常運行。XX財政節(jié)點規(guī)模較小,其工作負載管理目標為避免報表分析業(yè)務(wù)影響聯(lián)機交易,其資源負載管理配置可供中小規(guī)模集群(<60節(jié)點)的數(shù)據(jù)集市、BI分析、小型數(shù)倉集群參考。

      GaussDB(DWS)工作負載管理實戰(zhàn)

      業(yè)務(wù)系統(tǒng)中運行的SQL分為簡單SQL和復(fù)雜SQL,大量復(fù)雜SQL的并發(fā)執(zhí)行會導(dǎo)致數(shù)據(jù)庫服務(wù)器資源爭搶,簡單SQL的大量并發(fā)對服務(wù)器不構(gòu)成持續(xù)壓力,短時間內(nèi)可執(zhí)行完成,不會造成業(yè)務(wù)堆積。其中報表服務(wù)中運行的SQL以復(fù)雜SQL居多,整體業(yè)務(wù)邏輯相對復(fù)雜,在數(shù)據(jù)庫層面需要分別對核心交易和報表服務(wù)進行合理的資源管控,以保障業(yè)務(wù)系統(tǒng)正常運行。

      報表分析類業(yè)務(wù)的優(yōu)先級和實時性相對較低,但是復(fù)雜度更高,為有效進行資源管控,將報表分析和核心交易業(yè)務(wù)進行數(shù)據(jù)庫用戶分離,例如核心交易業(yè)務(wù)使用數(shù)據(jù)庫用戶budget_config_user,報表分析業(yè)務(wù)使用數(shù)據(jù)庫用戶report_user。針對交易用戶和報表用戶分別進行CPU資源和并發(fā)數(shù)控制以保障數(shù)據(jù)庫穩(wěn)定運行。

      結(jié)合報表分析業(yè)務(wù)的負載調(diào)研、日常監(jiān)控和測試驗證,50并發(fā)以內(nèi)的復(fù)雜報表SQL不會引起服務(wù)器資源爭搶,不會引起業(yè)務(wù)系統(tǒng)卡慢,配置報表用戶可使用20%的CPU資源。

      結(jié)合核心交易業(yè)務(wù)的負載調(diào)研、日常監(jiān)控和測試驗證,100并發(fā)以內(nèi)的查詢SQL不會對系統(tǒng)造成持續(xù)壓力,配合交易用戶可使用60%的CPU資源。

      l? 交易用戶資源配置:CPU=60%,并發(fā)=200,內(nèi)存=60%,存儲=1024000MB。

      l? 報表用戶資源配置:CPU=20%,并發(fā)=20,內(nèi)存=20%,存儲=1024000MB。

      l? 設(shè)置單個語句最大內(nèi)存使用量,超過使用量則報錯退出,避免單個語句占用過多內(nèi)存。

      異常規(guī)則中設(shè)置阻塞時間=1200S,執(zhí)行所消耗時間1800s,強制終止。

      (二)??????? 中大規(guī)模集群:XX銀行工作負載管理規(guī)劃

      XX銀行使用DWS作為銀行核心數(shù)據(jù)倉庫,每日運行批處理任務(wù),也供業(yè)務(wù)用戶進行一些靈活查詢。為了更充分的利用系統(tǒng)資源,同時兼顧到各個類型業(yè)務(wù)的要求,根據(jù)DWS工作負載管理提供的能力,設(shè)計了XX銀行工作負載管理方案。

      XX銀行節(jié)點規(guī)模大,達240節(jié)點,其工作負載管理目標為合理調(diào)配多種業(yè)務(wù)占用的資源,達到資源利用效率的最佳配置,其資源負載管理配置可供中大規(guī)模集群(>60節(jié)點)的企業(yè)級數(shù)據(jù)倉庫、行業(yè)云數(shù)據(jù)倉庫參考。

      XX銀行數(shù)據(jù)倉庫中的任務(wù)可以分為以下三大類:

      1.????? 跑批任務(wù)。跑批任務(wù)是數(shù)據(jù)倉庫內(nèi)主要運行的任務(wù),主要分為數(shù)據(jù)加載、批量加工和數(shù)據(jù)導(dǎo)出三類。其中,加載作業(yè)先運行,然后是批量加工作業(yè),最后由數(shù)據(jù)導(dǎo)出作業(yè)將加工的結(jié)果同步到下游系統(tǒng)。加載作業(yè)主要在0:00~05:00運行,批量加工作業(yè)基本持續(xù)一整天,需要和其他類型任務(wù)一起綜合考慮資源分配。導(dǎo)出任務(wù)主要在12:00~14:00運行。

      2.????? 業(yè)務(wù)用戶靈活查詢。業(yè)務(wù)靈活查詢由業(yè)務(wù)分析師、數(shù)據(jù)挖掘工程師等發(fā)起,主要在上班時間內(nèi)進行,即每天09:00~12:00, 14:00~20:00兩個時間段。

      3.????? 運維任務(wù)(備份等)。運維任務(wù)主要是數(shù)據(jù)備份。當(dāng)前XX銀行數(shù)據(jù)備份采用的是GDS導(dǎo)出方案,主要在20:00~24:00運行。

      具體工作負載計劃見下表所示:

      因此,根據(jù)上述6類任務(wù)類型,劃分6個隊列,每個隊列都可以在相應(yīng)時間段內(nèi)按照負載計劃自動調(diào)整資源利用情況(自動調(diào)整資源功能需升級到最新版本才能使用),在每個時間段內(nèi)分配不同的并發(fā)、CPU、內(nèi)存資源,實現(xiàn)了不同時間段內(nèi)作業(yè)優(yōu)先級的動態(tài)調(diào)整,即保證了業(yè)務(wù)優(yōu)先級,也使得系統(tǒng)總體資源利用最大化。同時,每個隊列也根據(jù)業(yè)務(wù)實際需求分配了最大空間使用量。下圖為相應(yīng)的負載模型,將不同的用戶加入到不同的隊列中,來實現(xiàn)對用戶占用資源的管控。

      此外,針對異常作業(yè)占用過多資源問題,XX銀行也利用DWS異常處理功能,設(shè)置了豐富的異常SQL處理規(guī)則,見下表所示:

      同時,為了避免單個語句占用過多磁盤、內(nèi)存資源,也可以使用以下參數(shù)來對單語句使用的內(nèi)存、磁盤空間資源進行限制。

      query_max_memory:限制單語句在單DN上占用的最大內(nèi)存量,如單語句分配內(nèi)存超過這個值,將進行報錯,將內(nèi)存歸還給系統(tǒng)。XX銀行單DN最大可用動態(tài)內(nèi)存為100GB,并發(fā)數(shù)為60,query_max_memory設(shè)置為30GB。

      sql_use_spacelimit:限制單語句在單個DN上最大插入的數(shù)據(jù)量大小,XX銀行單個DN可用磁盤空間為2TB,sql_use_spacelimit設(shè)置為400GB。

      數(shù)據(jù)倉庫服務(wù) GaussDB(DWS) Gauss AP EI企業(yè)智能

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:SUMIFS/COUNTIFS函數(shù)內(nèi)的間接列引用變化
      下一篇:Excel中替換函數(shù)你知曉哪些?
      相關(guān)文章
      亚洲精华国产精华精华液好用| 91午夜精品亚洲一区二区三区| 亚洲综合综合在线| 国产成人A亚洲精V品无码| 亚洲精品老司机在线观看| 国产精品亚洲专区无码WEB| 亚洲免费综合色在线视频| 亚洲 欧洲 自拍 另类 校园| 亚洲国产午夜精品理论片| 亚洲精品成人网站在线播放| 91亚洲精品视频| 亚洲黄色在线观看视频| 91亚洲va在线天线va天堂va国产| 亚洲成人免费在线| 亚洲国产天堂在线观看| 久久丫精品国产亚洲av不卡 | 亚洲国产综合精品一区在线播放| 国产精品亚洲一区二区在线观看| 国产精品亚洲一区二区在线观看| 国产成人亚洲午夜电影| 成人亚洲综合天堂| 亚洲精品视频在线观看你懂的| 亚洲午夜精品一级在线播放放| 久久亚洲中文字幕精品一区| 国产成人综合亚洲亚洲国产第一页| 亚洲人精品午夜射精日韩| 亚洲国产另类久久久精品| 久久亚洲私人国产精品vA| 亚洲欧洲精品国产区| 国产精品亚洲精品| 亚洲国产AV一区二区三区四区 | 精品久久久久久亚洲| 亚洲av日韩av无码| 亚洲网站在线免费观看| 亚洲a∨无码男人的天堂| 亚洲欧洲免费无码| 男人的天堂亚洲一区二区三区| 国产青草亚洲香蕉精品久久 | 亚洲制服在线观看| 亚洲国产精品网站在线播放| 国产亚洲视频在线|