TopSQL為DWS的監控系統,記錄DWS中各個作業、運算元級別的資源使用數據、耗時數據,包括下盤信息、記憶體、網路、耗時、警告、基礎信息等作業執行的數據。 ...
本文分享自華為雲社區《GaussDB(DWS)TopSQL總結》,作者:nullptr_ 。
TopSQL 背景
TopSQL為DWS的監控系統,記錄DWS中各個作業、運算元級別的資源使用數據、耗時數據,包括下盤信息、記憶體、網路、耗時、警告、基礎信息等作業執行的數據。
TopSQL 簡介
TopSQL分為實時表和歷史表,實時表主要展示系統當前的負載情況,歷史表主要用於存儲作業執行的歷史情況。歷史表主要用於歷史問題的分析回溯和問題定位、實時表主要用來展示當前系統中作業執行情況,讓系統現場更加直觀,為運維工作帶來了極大的方便。
TopSQL 功能介紹
主要視圖
前提條件(參數介紹)
- enable_resource_track topsql開關,是否開始topsql功能
- resource_track_level 設置監控級別,query:類似於sql的explain輸出信息,perf:類似於explain analyze輸出信息,operator_reltime: 統計實時運算元信息,operator:詳細記錄到每個運算元的執行信息,並且層級為向下相容 query->perf->operator_reltime->operator
- resource_track_cost topsql追蹤執行時間大於等於resource_track_cost 的作業
- enable_track_record_sql 控制是否記錄存儲過程、匿名塊內部的語句
- enable_track_record_subsql 控制是否記錄存儲過、匿名塊內部語句
- resource_track_subsql_duration 過濾執行時間小於resource_track_subsql_duration的語句
欄位含義介紹(重點功能作用)
類型介紹
值異常分析
TopSQL 重點邏輯梳理剖析
在DN通過打樁定期記錄作業的實時信息,並將記錄定期發送至CN,並將信息定期存儲至實時表中pgxc_wlm_session_statistics中,並定時將實時表中的作業落盤到歷史表中pgxc_wlm_session_info中,此過程為了減少阻塞將記錄放到無鎖隊列中,無鎖隊列提供了記錄的CAS原子操作,然後定期讀取無鎖隊列中的內容進行轉儲,pgxc_wlm_session_info通過start_time進行分區,每天一個分區,通過參數topsql_retention_time配置預設保留30個分區即30天的記錄,定期對pgxc_wlm_session_info的分區進行清理、創建。此過程在dws中有單獨的線程運行,對系統的影響較小。無鎖隊列大小是有上限的,如果轉儲處理的速度趕不上生成的速度那麼作業也會被丟棄。
歷史
當前pgxc_wlm_session_history只包含最近3分鐘的數據且數據來源實際是pgxc_wlm_session_info。