大數據“復活”記
1410
2025-03-31
GaussDB(DWS)的負載管理具有眾多參數和視圖,有時候光弄清楚這些參數和視圖的功能和字段就很費勁了,本文用來介紹下資源管理常用的所有的參數和視圖說明。以便更好的了解和使用DWS的負載管理功能。
參數說明
通用參數
- use_workload_manager:資源負載管理總開關,關閉和打開決定是否走資源管理功能。 - max_active_statements:單個cn所能接受的最大并發數量,即單cn下發的語句,活躍數量最大值,超過該值會進入全局排隊狀態。
靜態負載管理(資源池)
靜態負載管理相當于將內存/并發,做資源池或者說是隊列上的劃分,在cn上進行資源判斷,根據語句的cost決定該語句是簡單還是復雜,簡單作業進行并發管控,復雜作業進行用戶對應資源池的資源管控。
術語及參數
- resource pool : 資源池,可以將多個用戶關聯到同一個資源池中,處于同一個資源池的用戶共享該資源池的資源,包括并發數量。 - parctl_min_cost : 作為靜態負載管理下,界定簡單作業和復雜作業的閾值,大于該值為復雜作業,小于該值為簡單作業。 - active_statements:資源池級別復雜作業并發數,即大于上述parctl_min_cost參數的語句最多能并行運行多少個。 - max_dop:資源池級別簡單作業并發數,即小于上述parctl_min_cost參數的語句最多能并行運行多少個。
動態負載管理(ccn總體仲裁管理)
- enable_dynamic_workload: 動態負載管理開關,打開后自動使用內存自適應功能,會由ccn仲裁全局內存情況決定語句是否下發,如果內存不足以支撐sql語句執行,就會進入ccn的隊列。 修改該參數需要重啟集群生效。
磁盤管控參數
- enable_perm_space : 磁盤空間管控總開關,關閉該參數也可以關閉7天一次的總體統計線程。 - select gs_wlm_readjust_user_space(0); 該函數在用戶磁盤空間統計不準確時候可以主動調用作為矯正。 由于用戶的磁盤空間使用是維護在內存中的一個數據結構,實際物理文件變動的場景特別多,例如有文件直接被異常rm掉,數據庫內核是不會統計此類情況的,因此可能會出現內存與實際有差異的情況,此時可以通過該函數進行一個矯正操作。 規格:8.0以下,該函數只能重新矯正連接的庫,執行效率較低;8.0及以上將該函數進行了性能優化。并且會直接矯正全部庫的磁盤使用情況。
資源監控參數
TOPSQL參數
- enable_resource_track :設置是否開啟資源實時監控功能。此參數需在CN和DN同時應用。 - enable_resource_record :設置是否開啟資源監控記錄歸檔功能。開啟時,對于history視圖(GS_WLM_SESSION_HISTORY和GS_WLM_OPERATOR_HISTORY)中的記錄,每隔3分鐘會分別被歸檔到相應的info視圖(GS_WLM_SESSION_INFO和GS_WLM_OPERATOR_INFO),歸檔后history視圖中的記錄會被清除。此參數需在CN和DN同時應用。 - resource_track_level :設置當前會話的資源監控的等級,建議使用query級別。 - resource_track_cost :設置對當前會話的語句進行資源監控的最小執行代價。該參數只有當參數enable_resource_track為on時才有效。 - resource_track_duration:設置資源監控實時視圖(實時topsql)中記錄的語句執行結束后進行歷史信息轉存的最小執行時間。當執行完成的作業,其執行時間不小于此參數值時,作業信息會從實時視圖(以statistics為后綴的視圖)轉存到相應的歷史視圖(以history為后綴的視圖)中。該參數只有當enable_resource_track為on時才有效。 - topsql_retention_time:gs_wlm_session_invo的老化時間,配置以后可以保留配置的時間的數據,其余會每10min發起一次delete進行清理。
內存相關參數
- disable_memory_protect : 禁止內存保護功能。當系統內存不足時如果需要查詢系統視圖,可以先將此參數置為on,禁止內存保護功能,保證視圖可以正常查詢。該參數只適用于在系統內存不足時進行系統診斷和調試,正常運行時請保持該參數配置為off。 該參數定位問題時很有用處。防止memory temprilary unaviliavle。 - max_process_memory : 進程最大使用內存,其中,以此值去除掉行列存掃描等配置的值之后,剩余量作為max_dynamic_memory用于用戶SQL計算等行為(租戶的內存分配也是基于max_dynamic_memory)。
視圖說明
- pg_stat_activity/pgxc_stat_activity: 說明所有連到cn上的語句或者說連接的狀態,重要字段解釋如下: - state:當前語句的狀態,幾種state解釋如下: - idle – 空閑連接 - active – 活躍連接,有語句執行或者排隊 - idle in transaction – 事務未提交 - enqueue:當前語句的排隊狀態,幾個排隊狀態解釋如下 - waiting in global queue :表示語句在全局排隊中。(活躍語句超過max_active_statements) - waiting in respool queue :表示語句在資源池排隊中。(達到上述靜態負載中復雜作業或者簡單作業并發上限) - waiting in ccn queue:表示作業在CCN排隊中。動態自適應功能判斷內存不足以執行新sql。
pg_session_wlmstat:
各種作業正在運行時的負載管理相關信息,重要字段解釋如下:
- priority : 語句所在的cgroup優先級 - attribute : 語句屬性,用于判斷語句是簡單或者復雜作業等,幾種類型介紹如下: - Ordinary : 語句剛發送到數據庫,默認為此類型。 - Simple :簡單語句。(會受資源池級別并發控制,全局并發控制) - Complicated : 復雜語句。(受資源池級別資源控制,全局并發控制) - Internal : 數據庫內部語句。(不受管控,耗費資源很少) - enqueue : 語句詳細排隊狀態,重要字段解釋如下: - Global::在全局隊列中排隊。 - Respool:在資源池隊列中排隊。 - CentralQueue:在中心協調節點(CCN)中排隊。 - Transaction:語句處于一個事務塊中。 - StoredProc : 語句處于一個存儲過程中。 - None:未在排隊。 - Forced None : 事務塊語句或存儲過程語句由于超出設定的等待時間而強制執行。
pg_thread_wait_status:
通過PG_THREAD_WAIT_STATUS視圖可以檢測當前實例中工作線程(backend thread)以及輔助線程(auxiliary thread)的阻塞等待情況。
PS:此視圖中的lwtid字段可以關聯上述pg_session_wlmstat中的processid以定位到一個語句的線程處于什么狀態。可是使用query_id關聯到pg_thread_wait_status.
SQL監控視圖
歷史topsql:gs/pgxc_wlm_session_info
實時topsql:gs_wlm_session_statistics
用戶資源監控功能
pg_total_user_resource_info
GS_WLM_USER_RESOURCE_HISTORY
實例級別資源監控功能
監控CN、DN實例資源使用狀態(包括內存,CPU,磁盤IO,進程物理IO和進程邏輯IO)的系統表
pgxc_get_wlm_current_instance_info(‘ALL’);
GS_WLM_INSTANCE_HISTORY
內存相關視圖
pv_total_memory_detail/pgxc_total_memory_detail:
pv_session_memory_detail:
資源池上的異常規則查詢
通過gs_respool_exception_info(‘rp_name’)查看異常規則;
通過 gs_cgroup -p,也可以查看對應控制組上的異常規則;
EI企業智能 Gauss AP 數據倉庫服務 GaussDB(DWS) 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。