大數據“復活”記
694
2025-04-03
一、??? 場景介紹
當有多個數據庫用戶同時在DWS上執行SQL作業時,可能出現以下情況:
一些復雜SQL可能會長時間占用集群資源,從而影響其他查詢的性能。例如一組數據庫用戶不斷提交復雜、耗時的查詢,而另一組用戶經常提交短查詢。在這種情況下,短時查詢可能不得不在隊列中等待耗時查詢完成。
一些SQL由于數據傾斜、執行計劃未調優等原因,占用過多內存空間,導致其他語句因申請不到內存而報錯,或占用過多磁盤空間,導致磁盤滿而觸發集群只讀,無法進行寫入。
為了提高系統整體吞吐量,避免壞SQL影響系統整體運行,您可以使用DWS工作負載管理功能處理這類問題,DWS工作負載管理以工作負載隊列為資源承載,對于不同的業務類型可以創建不同的工作負載隊列,為這些隊列配置不同的資源占比,然后將數據庫用戶添加至對應的隊列中,以此來限制這些數據庫用戶的資源使用。例如,將經常提交復雜查詢作業的數據庫用戶分為一類,為這類用戶創建一個工作負載隊列并給這個隊列分配多一些的資源,之后將這類用戶添加至這個隊列中,那么這類用戶所提交的復雜作業只能使用所創建隊列擁有的資源;同時再創建一個占用資源較少的隊列分配給執行短查詢的用戶使用,這樣兩種作業就能夠同時執行互不影響。
二、??? 框架介紹
在實際業務運行中,系統壓力可能集中在集群中的一部分節點或者系統資源中的某項資源,導致系統資源不能充分利用,集群性能不能充分發揮。因此,GaussDB(DWS)提供了基于用戶資源池的資源管理功能,將不同類型的作業關聯到不同的資源池分別管理,以實現系統資源(并發、CPU、內存、存儲空間)的隔離和作業的異常處理,避免發生資源的不合理占用。
工作負載管理支持配置的隊列資源包含:并發、內存、CPU及磁盤空間,關聯該隊列的用戶執行的所有作業均受隊列資源限制。總體架構如下:
三、??? 配置指南
(一)??? 頁面基本操作
1.? 進入工作負載管理
步驟1:登錄華為云或HCS首頁,選擇數據倉庫服務跳轉到DWS管理控制臺。
步驟2:在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱,例如DWS_openlab。
步驟3:切換至“工作負載管理”頁簽。
在工作負載管理頁面,您可以修改工作負載管理的全局配置,可以在工作負載管理頁面添加、創建、修改工作負載隊列,添加數據庫用戶至隊列,也可以將隊列中的某個數據庫用戶從隊列中移除。負載管理頁面添加、創建、修改工作負載隊列,添加數據庫用戶至隊列,也可以將隊列中的某個數據庫用戶從隊列中移除,頁面概覽如下。
----結束
2.? 打開或關閉工作負載管理
工作負載管理配置包括工作負載開關、全局最大并發數。這里的全局最大并發數指的是單個CN上的最大并發數,如果您通過工作負載開關關閉了工作負載管理功能,那么所有的工作負載管理功能將不再可用。
3.? 資源配置
在“資源配置”一欄,您可以瀏覽當前工作負載隊列的資源配置情況,包括“CPU資源(%)”、“內存資源(%)”、“存儲資源(MB)”、“查詢并發”。
4.? 設置異常規則
在“異常規則”一欄,您可以瀏覽當前工作負載隊列中的異常規則設置情況,異常規則允許您對隊列中用戶執行的作業做異常控制。
5.? 關聯用戶
在“關聯用戶”一欄,您可以瀏覽當前工作負載隊列中已關聯的用戶,且可以看到當前時間每個用戶已使用的內存以及磁盤使用量,如下圖所示。
(二)??? 添加工作負載隊列
步驟1: 登錄DWS管理控制臺。
步驟2: 在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱。
步驟3: 切換至“工作負載管理”頁簽。
步驟4: 單擊工作負載隊列旁的“+”符號添加隊列。
【說明】最多可創建63個工作負載隊列。
步驟5: 參見表1-1填寫工作負載隊列的名稱和相關資源配置。
表1-1 工作負載隊列參數
參數項
描述
取值
名稱
工作負載隊列的名稱。
queue_test
CPU資源(%)
隊列中的數據庫用戶在執行作業時可使用的CPU時間片比例。
20
內存資源(%)
隊列所占用的內存百分比。
注意:當前版本的“內存資源(%)”與“查詢并發”只有一個生效。
20
儲存資源(MB)
可使用的永久表空間大小。
1024
查詢并發
隊列中的最大查詢并發數。
注意:當前版本的“內存資源(%)”與“查詢并發”只有一個生效。
10
顯示添加工作負載隊列:
【說明】參數項中,CPU資源是配額,當系統有空閑CPU資源時,可以允許超過CPU設置的配額值。內存資源、儲存資源、查詢并發參數是限額。
步驟6: 核對信息后,單擊“確定”,添加隊列完成。
----結束
(三)??? 修改工作負載隊列
在工作負載隊列中,您可以對某個工作負載隊列的參數進行修改。
步驟1: 登錄DWS管理控制臺。
步驟2: 在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱。
步驟3: 切換至“工作負載管理”頁簽。
步驟4: 在左側“工作負載隊列”中單擊需要修改的隊列名稱,出現如下頁面,包括“短查詢配置”、“資源配置”、“異常規則”、“關聯用戶”。
步驟5: 修改短查詢配置。修改為相應取值,單擊右側“保存”。
如果集群中運行的是查詢業務,或查詢跑批混合業務,建議開啟短查詢加速,并根據當前隊列在每個CN上可能運行的最大短查詢并發數來設置短查詢并發。這樣,在系統中占用內存小于32MB的短查詢將會單獨排隊運行,不和跑批復雜查詢一起排隊,加快短查詢響應速度。
參數項
描述
取值
短查詢加速
短查詢加速開關,默認打開
打開
短查詢并發
短查詢作業為執行估算內存小于32MB的查詢作業,默認值"1"表示不管控。
10
配置完成后點擊保存:
步驟6: 修改資源配置。
(1)單擊右側“編輯”,參見表1-2修改相應參數。
表1-2 工作負載隊列參數
參數項
描述
取值
名稱
工作負載隊列的名稱。
queue_test
CPU資源(%)
隊列中的數據庫用戶在執行作業時可使用的CPU時間片比例。
20
內存資源(%)
隊列所占用的內存百分比。
注意:當前版本的“內存資源(%)”與“查詢并發”只有一個生效。
20
儲存資源MB)
可使用的永久表空間大小。
1024
查詢并發
隊列中的最大查詢并發數。
注意:當前版本的“內存資源(%)”與“查詢并發”只有一個生效。
10
(2)單擊“確定”。
【說明】
CPU和內存支持動態調整。
約束條件:參數值調小時無限制;參數值調大時,如果總配置值(參數調整值+已配置值)超過100%,需要先將空閑隊列參數值調小,再將目標隊列參數值調大,控制參數總配置值不超過100%。
存儲資源支持動態調整。
約束條件:參數值調大時無限制;參數值調小時,如果設置值大于已使用空間,支持修改,如果設置值小于已使用空間,不支持修改(報錯)。
查詢并發支持動態調整。
約束條件:無。
步驟7: 修改異常規則。
(1)參見表1-3修改相應參數。
說明:異常規則允許您對隊列中用戶執行的作業做異常控制,目前支持表1-3的相關配置。
– 如選擇“終止”,則需要設置相應時間。
– 如選擇“不約束”,則無異常規則約束。
表1-3 異常規則參數
參數項
描述
取值
阻塞時間
作業的阻塞時間,單位秒。包括全局并發排隊以及局部并發排隊的總時間。例如,如果配置“阻塞時間”為300秒,那么當該隊列中的用戶執行的某個作業在阻塞300秒后將會被殺死。
1200
執行所消耗時間
作業的已被執行時間,單位秒。從開始執行到當前所消耗的時間。
例如,如果配置“執行所消耗時間”為100秒,那么當該隊列中的用戶執行的某個作業在執行超過100秒后將被殺死。
2400
所有DN上CPU總時間
作業在所有DN上執行時所耗費的CPU總時間,單位秒。
100
檢查傾斜率的時間間隔
檢查作業執行CPU傾斜率的間隔時間,單位秒,需同“所有DN上CPU時間的傾斜率”一起設置。
2400
所有DN上CPU總時間傾斜率
作業在DN上執行時的CPU時間的傾斜率,依賴于“檢查傾斜率的時間間隔”的設置。
90
(2)單擊“保存”。
步驟8: 關聯用戶。
說明:
一個數據庫用戶只有被添加到某個隊列中之后,該用戶運行作業所使用的資源才能被管控。
一個數據庫用戶只能被添加至一個隊列中,從隊列中移除的用戶可以再次添加至其他隊列。
(1) 單擊右側“添加”。
(2)從當前用戶列表中,勾選需要添加的用戶,一次可勾選多個。
(3)單擊“確定”。
(4)如果需要刪除用戶,則單擊待刪除用戶所在行右邊的“刪除”即可。
----結束
(四)??? 查詢概覽
步驟1: 登錄DWS管理控制臺。
步驟2: 在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱。
步驟3: 切換至“工作負載管理”頁簽。
步驟4: 在左側“工作負載隊列”中單擊需要查看的隊列名稱。
在“查詢概覽”區域:可以看到當前時間當前隊列中正在運行的長短查詢數,圖表信息15秒刷新一次。
----結束
(五)??? 刪除工作負載隊列
步驟1: 登錄DWS管理控制臺。
步驟2: 在集群列表中單擊需要訪問“工作負載管理”頁面的集群名稱。
步驟3: 切換至“工作負載管理”頁簽。
步驟4: 在左側“工作負載隊列”中單擊需要刪除的隊列名稱。
步驟5: 單擊右側的“刪除”。
說明:刪除隊列時如果隊列中有關聯的數據庫用戶,那么隊列刪除后這些用戶將被關聯默認隊列。
(六)??? 資源限制相關參數
除了頁面提供的工作負載管理功能外,DWS也提供了一些guc參數,來限制單語句占用的最大資源,避免單個語句占用過多資源,導致系統不可用。
query_max_memory: 限制單語句在單DN上占用的最大內存量,如單語句分配內存超過這個值,將進行報錯,將內存歸還給系統。建議按如下方法配置:
登陸任意CN查詢:execute direct on (dn_1) 'select * from pg_total_memory_detail where memorytype = ''max_dynamic_memory''';查出來的值即為單個DN上所有SQL可以使用的總內存。
建議根據業務并發數,將query_max_memory設置為上步查出總內存的1/2, 1/3,假設系統表發數較小(<20),可設置為1/2, 如為中大并發(>20),可設置為1/3。
sql_use_spacelimit:限制單語句在單個DN上最大插入的數據量大小,如單語句在單個DN上插入數據量超過這個值,將進行報錯,避免單個SQL在單個DN上插入的數據量過大,造成DN嚴重傾斜,導致性能差,及磁盤滿問題。建議此參數設置為單DN可用總空間的1/5。
----結束
四、??? 最佳實踐
以下以兩個實踐案例來說明工作負載管理的實際應用。其中案例一為XX財政工作負載管理配置,可以作為小規模集群(一般小于50節點)混合業務場景下的配置參考。案例二為XX銀行工作負載管理配置,可以作為中大規模集群聯機查詢和復雜跑批混合業務場景下的配置參考。其中的配置指標需要根據實際業務需求確定。
(一)??? 小規模集群:XX財政工作負載管理規劃
XX財政業務場景主要分為聯機交易(OLTP)和報表分析(OLAP)兩大類,其中報表服務的優先級相對較低,在合理的情況下優先保障業務系統的正常運行。XX財政節點規模較小,其工作負載管理目標為避免報表分析業務影響聯機交易,其資源負載管理配置可供中小規模集群(<60節點)的數據集市、BI分析、小型數倉集群參考。
業務系統中運行的SQL分為簡單SQL和復雜SQL,大量復雜SQL的并發執行會導致數據庫服務器資源爭搶,簡單SQL的大量并發對服務器不構成持續壓力,短時間內可執行完成,不會造成業務堆積。其中報表服務中運行的SQL以復雜SQL居多,整體業務邏輯相對復雜,在數據庫層面需要分別對核心交易和報表服務進行合理的資源管控,以保障業務系統正常運行。
報表分析類業務的優先級和實時性相對較低,但是復雜度更高,為有效進行資源管控,將報表分析和核心交易業務進行數據庫用戶分離,例如核心交易業務使用數據庫用戶budget_config_user,報表分析業務使用數據庫用戶report_user。針對交易用戶和報表用戶分別進行CPU資源和并發數控制以保障數據庫穩定運行。
結合報表分析業務的負載調研、日常監控和測試驗證,50并發以內的復雜報表SQL不會引起服務器資源爭搶,不會引起業務系統卡慢,配置報表用戶可使用20%的CPU資源。
結合核心交易業務的負載調研、日常監控和測試驗證,100并發以內的查詢SQL不會對系統造成持續壓力,配合交易用戶可使用60%的CPU資源。
交易用戶資源配置:CPU=60%,并發=200,內存=60%,存儲=1024000MB。
報表用戶資源配置:CPU=20%,并發=20,內存=20%,存儲=1024000MB。
設置單個語句最大內存使用量,超過使用量則報錯退出,避免單個語句占用過多內存。
異常規則中設置阻塞時間=1200S,執行所消耗時間1800s,強制終止。
(二)??? 中大規模集群:XX銀行工作負載管理規劃
XX銀行使用DWS作為銀行核心數據倉庫,每日運行批處理任務,也供業務用戶進行一些靈活查詢。為了更充分的利用系統資源,同時兼顧到各個類型業務的要求,根據DWS工作負載管理提供的能力,設計了XX銀行工作負載管理方案。
XX銀行節點規模大,達240節點,其工作負載管理目標為合理調配多種業務占用的資源,達到資源利用效率的最佳配置,其資源負載管理配置可供中大規模集群(>60節點)的企業級數據倉庫、行業云數據倉庫參考。
XX銀行數據倉庫中的任務可以分為以下三大類:
跑批任務。跑批任務是數據倉庫內主要運行的任務,主要分為數據加載、批量加工和數據導出三類。其中,加載作業先運行,然后是批量加工作業,最后由數據導出作業將加工的結果同步到下游系統。加載作業主要在0:00~05:00運行,批量加工作業基本持續一整天,需要和其他類型任務一起綜合考慮資源分配。導出任務主要在12:00~14:00運行。
業務用戶靈活查詢。業務靈活查詢由業務分析師、數據挖掘工程師等發起,主要在上班時間內進行,即每天09:00~12:00, 14:00~20:00兩個時間段。
運維任務(備份等)。運維任務主要是數據備份。當前XX銀行數據備份采用的是GDS導出方案,主要在20:00~24:00運行。
具體工作負載計劃見下表所示:
因此,根據上述6類任務類型,劃分6個隊列,每個隊列都可以在相應時間段內按照負載計劃自動調整資源利用情況(自動調整資源功能需升級到最新版本才能使用),在每個時間段內分配不同的并發、CPU、內存資源,實現了不同時間段內作業優先級的動態調整,即保證了業務優先級,也使得系統總體資源利用最大化。同時,每個隊列也根據業務實際需求分配了最大空間使用量。下圖為相應的負載模型,將不同的用戶加入到不同的隊列中,來實現對用戶占用資源的管控。
此外,針對異常作業占用過多資源問題,XX銀行也利用DWS異常處理功能,設置了豐富的異常SQL處理規則,見下表所示:
同時,為了避免單個語句占用過多磁盤、內存資源,也可以使用以下參數來對單語句使用的內存、磁盤空間資源進行限制。
query_max_memory:限制單語句在單DN上占用的最大內存量,如單語句分配內存超過這個值,將進行報錯,將內存歸還給系統。XX銀行單DN最大可用動態內存為100GB,并發數為60,query_max_memory設置為30GB。
sql_use_spacelimit:限制單語句在單個DN上最大插入的數據量大小,XX銀行單個DN可用磁盤空間為2TB,sql_use_spacelimit設置為400GB。
GaussDB(DWS)實踐系列-工作負載管理交付指南(線下版本)
博文: https://bbs.huaweicloud.com/blogs/266993
論壇: https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=128274
想了解GuassDB(DWS)更多信息,歡迎微信搜索“GaussDB DWS”關注微信公眾號,和您分享最新最全的PB級數倉黑科技,后臺還可獲取眾多學習資料~
EI企業智能 Gauss AP 數據倉庫服務 GaussDB(DWS) 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。