功能介紹
DWS工作負載隊列的具體功能包括:并發管理、內存管理、CPU管理以及異常規則。
并發管理
并發,即資源池中的最大查詢并發數。并發管理作為運行前管理,用于限制查詢并發運行的數量,通過限制查詢并發數降低資源爭搶,保證資源的有序高效利用。
在資源池頁面“短查詢配置”一欄,您可以通過開關鍵決定是否開啟短查詢加速功能。如果需要對簡單語句并發數(默認值為-1,0 或-1表示不控制)進行修改,可選擇打開短查詢加速。
并發管理規則如下:
- 短查詢加速開啟,復雜查詢受工作負載隊列并發控制,簡單查詢受短查詢并發控制。
- 短查詢加速關閉,復雜查詢和簡單查詢均受工作負載隊列并發控制,短查詢并發控制無效。
內存管理
內存資源,即工作負載隊列所占用的內存百分比。
內存管理的目的:防止數據庫系統占用內存過高導致內存溢出(OOM)和實現資源池之間的內存隔離和限制。為滿足這兩個目的,工作負載管理從以下兩方面進行內存管理:
- 全局內存管理
為防止數據庫系統使用內存過大導致OOM,設置數據庫系統全局內存上限(max_process_memory),對數據庫全局內存進行管理。全局內存管理包含運行前管理和運行中管理,運行中管理防止實際使用內存超限,運行前管理防止查詢執行過程中報錯,具體如下:
?運行前管理:
一方面慢車道運行的所有查詢估算內存都會進行統計,另一方面數據庫系統實際使用內存會進行反饋,當實際使用內存大于統計內存時,對統計內存進行調整。查詢運行前,判斷全局剩余內存能否滿足查詢運行,滿足情況下查詢可以直接運行,否則查詢需要排隊,等待其他查詢釋放資源后運行。
?運行中管理:
查詢執行過程中實際使用的內存也會進行統計,查詢在申請內存時判斷內存使用是否超限,內存超限查詢報錯,已用內存釋放。
- 資源池內存管理
資源池內存管理屬于專屬限額的管理方式,即資源池分配多少內存就只能使用多少內存,空閑出來的內存其他資源池不能使用。
資源池內存分配采用百分比方式,取值范圍0~100。0表示資源池不進行內存管理,100表示資源池進行內存管理且可使用全局所有內存。
所有資源池分配的內存百分比之和不能超過100。資源池內存管理僅管控慢車道查詢,且只包含運行前管理,處理邏輯與全局內存運行前管理類似。資源池慢車道查詢運行前,進行估算內存統計,當統計內存大于資源池內存時,查詢需要排隊,等待資源池內其他查詢運行結束釋放資源后才能運行。
CPU管理
目前支持“共享配額”和“專屬限額”兩種CPU管理方式:
CPU共享配額:在CPU系統繁忙的情況下,不同資源池按照共享配額配置分配CPU資源;在CPU系統空閑的情況下,該配置不生效。- CPU專屬限額:限制資源池使用的CPU核數上限,無論CPU系統繁忙或者空閑,該資源池上的作業都無法突破該限額配置。
在資源池頁面“資源配置”一欄,您可以修改當前資源池的CPU共享配額和專屬限額。
共享配額和專屬限額的管理方式各有優劣,共享配額的管理方式可以實現CPU資源的充分利用,但是資源池之間隔離不徹底,可能影響查詢性能;專屬限額的管理方式可以實現CPU資源的絕對隔離,但是在資源池CPU資源空閑時,會造成資源的浪費。
說明CPU專屬限額僅8.1.3及以上版本支持。
異常規則
異常規則用于異常查詢的識別和快速處理,防止“低質量SQL”長時間占用大量資源,導致其他查詢阻塞或性能下降。
在資源池頁面“關聯異常規則”一欄,可瀏覽當前資源池中已綁定的異常規則,綁定新異常規則,解綁已有異常規則。目前支持的異常處理規則如表 異常規則參數所示。
說明
8.2.1及以上集群版本支持降級異常規則,所有異常規則都支持降級行為,降級后僅網絡資源搶占降至低優先級,即在正常查詢無網絡請求時,才會調度降級查詢的網絡請求。
關聯、解綁異常規則僅8.2.0及以上集群版本支持。
異常規則參數
| 參數項 | 描述 | 取值范圍(0表示不約束) | 操作 |
|---|---|---|---|
| 阻塞時間 | 作業的阻塞時間,包括全局并發排隊以及局部并發排隊的總時間,單位秒。 例如,如果配置“阻塞時間”為300秒,那么當該資源池中的用戶執行的某個作業在阻塞300秒后將被終止。 | 1~2147483647的整數。0表示不約束。 | 終止、降級或不約束 |
| 執行所消耗時間 | 已經執行的作業從開始執行到當前所消耗的時間,單位為秒。 例如,如果配置“執行所消耗時間”為100秒,那么當該資源池中的用戶執行的某個作業在執行超過100秒后將被終止。 | 1~2147483647的整數。0表示不約束。 | 終止、降級或不約束 |
| 所有DN上CPU總時間 | 作業在所有DN上執行時所耗費的CPU總時間,單位為秒。 | 1~2147483647的整數。0表示不約束。 | 終止、降級或不約束 |
| 檢查傾斜率的時間間隔 | 檢查作業執行的CPU傾斜率的間隔時間,單位為秒,需同“所有DN上CPU時間的傾斜率”一起設置。 | 1~2147483647的整數。0表示不約束。 | 終止、降級或不約束 |
| 所有DN上CPU總時間傾斜率 | 作業在DN上執行時的CPU時間的傾斜率,依賴于“檢查傾斜率的時間間隔”的設置。 | 1~100的整數。0表示不約束。 | 終止、降級或不約束 |
| 單DN算子下盤大小 | 作業在單個DN上最大下盤的數據量,單位MB。 說明 該異常規則僅8.2.0及以上集群版本支持。 | 1~2147483647的整數。0表示不約束。 | 終止、降級或不約束 |
| DN平均消耗CPU占比 | 作業在所有DN上執行時的平均CPU使用率,檢測周期不強依賴“檢查傾斜率的時間間隔”,若配置將使用該檢查間隔,否則系統默認30秒間隔。 說明 該異常規則僅8.2.0及以上集群版本支持。 | 1~100的整數。0表示不約束 | 終止、降級或不約束 |
| 單個DN上最大帶寬 | 作業在單個DN上最大可占用的網絡帶寬,單位MB。 說明 該異常規則僅8.2.1及以上集群版本支持。 | 1~2147483647的整數。0表示不約束。 | 終止、降級或不約束 |