摘要:目前TopSQL功能被用戶廣泛使用,是性能定位、劣化分析、審計回溯等重要的基石,為用戶提供覆蓋內存、耗時、IO、網絡、空間等多方面的監控能力。
本文分享自華為云社區《GaussDB(DWS)監控工具指南(一)作業級監控TopSQL》,作者:幕后小黑爪 。
(相關資料圖)
1、引言:
監控系統是智能化管理和自動化運維的基石,可以為資源規劃,故障排查,性能優化提供至關重要的數據支持。GaussDB(DWS)作為企業級數倉,為用戶提供了一整套覆蓋實例級、用戶級、作業級的資源監控能力,其中,作業級監控(下文統稱為TopSQL)主要是對運行作業的監控,包括了實時運行作業的相關信息,歷史運行作業的相關信息等。它收集的數據來源于數據庫內部,為用戶提供了實時監控數據庫的能力。
目前TopSQL功能被用戶廣泛使用,是性能定位、劣化分析、審計回溯等重要的基石,為用戶提供覆蓋內存、耗時、IO、網絡、空間等多方面的監控能力。
本文以數倉813版本作為基線,對TopSQL進行介紹。
2、TopSQL功能介紹
對于用戶而言,數據庫是個黑盒,輸入SQL語句,輸出預期結果。在此過程中,用戶關心兩點:
- 輸出結果是否符合預期;
- 語句要多久跑完。
關于第一個問題,用戶需要關注下SQL語句寫的是否合理。而對于第二個問題,普通用戶可以通過explain等手段分析作業的執行計劃,然而企業用戶的SQL作業耗時久,影響較大,重跑代價較高,無法額外通過explain performance等手段進行分析,此時TopSQL可以幫助用戶打開數據庫黑盒,查看作業執行的實時情況和歷史情況,便于用戶分析數據庫的情況。
TopSQL功能主要通過視圖進行承載,如下表所示,本文以query級別的視圖為例進行說明。
使用TopSQL功能需要sysadmin權限。此外,用戶需先檢查下TopSQL功能是否開啟,涉及TopSQL的數據庫GUC參數包括:
- ENABLE_RESOURCE_TRACK (ON)
是否開啟監控功能,實時TopSQL的總開關,關閉之后實時TopSQL將不再進行記錄,更不會在歷史TopSQL中出現。
- RESOURCE_TRACK_COST(0)
設置對當前會話的語句進行資源監控的最小執行代價。
- RESOURCE_TRACK_LEVEL(QUERY)
設置當前會話的資源監控的等級,默認為query級別。
- RESOURCE_TRACK_DURATION(60S)
設置實時TopSQL中記錄的語句執行結束后進行歷史信息轉存的最小執行時間。當執行完成的作業,其執行時間不小于此參數值時,作業信息會從實時視圖(以STATISTICS為后綴的視圖)轉存到相應的歷史視圖
- ENABLE_RESOURCE_RECORD(ON)
設置是否開啟資源監控記錄歸檔功能。開啟時,對于執行結束的記錄,會分別被歸檔到相應的INFO視圖,CN和DN都需要設置上。
- TOPSQL_RETENTION_TIME(30)
設置歷史TopSQL中GS_WLM_SESSION_INFO和GS_WLM_OPERATOR_INFO表中數據的保存時間,單位為天。
參數正確設置后,TopSQL會記錄用戶的SQL語句執行過程中的相關信息,用戶可以使用TopSQL的視圖篩選出執行時間較長的作業,專注于慢SQL的分析。
TopSQL功能分為實時TopSQL和歷史TopSQL,以query級別為例,當需要查看正在運行的作業時,用戶可查看實時TopSQL視圖GS_WLM_SESSION_STATISTICS和PGXC_WLM_SESSION_STATISTICS,若需要對已經執行完成的作業進行分析,可查詢歷史TopSQL視圖GS_WLM_SESSION_ HISTORY和PGXC_WLM_SESSION_HISTORY。其中GS_開頭的可以查詢當前CN節點上正在執行的作業信息,PGXC_開頭的可查詢所有CN節點上正在執行的作業信息。
實時TopSQL視圖為用戶記錄了作業運行時的相關信息,比如作業下發來源、阻塞時間、執行時長、開始時間、內存消耗、作業下盤量、作業IO、網絡、語句類型、語句的執行計劃等信息。用戶可先通過resource_pool、nodename、username、query等信息定位到自己需要分析的語句,再通過作業運行信息定位問題。又或者用戶可通過對查詢進行篩選,篩選出當前占用資源較多的作業。
歷史TopSQL視圖記錄了作業運行結束時的資源使用情況(包括內存、下盤、CPU時間等)和運行狀態信息(包括報錯、終止、異常等)以及性能告警信息。用戶可通過對歷史語句運行數據的分析,篩選出執行時長較大的語句,看語句執行計劃是否有優化的空間,是否需要對表做一些analyze或者vacuum之類的操作。又比如對于內存報錯的情況,可分析內存占用高的語句是否合理,從執行計劃上分析是否有優化空間。
文末附TopSQL實踐:常見問題現象及對應原因。
3、TopSQL的原理解析
3.1 TopSQL原理簡介:
TopSQL的數據來源于數據庫內核,當語句執行時,TopSQL會實時記錄語句執行的相關信息。實時TopSQL數據會保存在內存的臨時表中,當語句執行結束后,數據會轉存到對應實體表GS_WLM_SESSION_INFO中,在實際使用中,由于下發作業繁多,歷史TopSQL記錄的作業數也不斷增長,這樣會導致INFO表中的數據量逐漸龐大,為了確保數倉整體性能不受影響,支持通過TOPSQL_RETENTION_TIME來設置INFO表中數據的保存時間(單位為天)。當數據存留時長超過這個時限,會對實體表GS_WLM_SESSION_INFO進行數據老化刪除處理。
圖 3-1 TopSQL數據流通圖
如圖3-1所示,各項GUC參數決定了TopSQL生成的記錄信息,具體的參數說明詳見第2節使用TopSQL前的檢驗。
3.2 性能分析:
對于企業用戶而言,性能問題是Top級問題,對于TopSQL功能,我們進行了性能壓測,在4TB的場景下,進行TPCC基準性能測試,進行了2000的并發壓測,TPMC下降了約有2%,屬于可接受的范圍。
3.3 相關指標
語句屬性列說明:
語句的執行信息屬性列,斜體代表可更換前綴/后綴式的指標,類似前綴后綴有(min_,max_,total_,average_,_skew_percent)
3.4 特殊情況說明:
TopSQL由于自身限制,存在一些記錄異常的情況,此處對8.1.3版本的TopSQL語句記錄情況進行說明:
- 不記錄特殊數據定義語句,如:SET、RESET、SHOW、ALTER SESSION SET、SET CONSTRAINTS語句;
- 記錄數據定義語句,例如:執行CREATE、ALTER、DROP、GRANT、REVOKE和VACUUM語句;
- 記錄數據操作語句,例如:
- 執行SELECT、INSERT、UPDATE和DELETE語句。
- 執行explain analyze和explain performance場景。
- 執行查詢query級別/perf級別視圖
- ODBC下發作業,由于多語句原因,會記錄事務的BEGIN和end語句;
- JDBC下發作業,隨機性多記錄一條JDBC的內部語句
- 解析錯誤和語法報錯的異常不記錄
- 用戶手動CANCEL作業,顯示的監控數據可能為0;
- 當子語句開關打開后,只會記錄下發到DN上執行的子語句;
- 游標語句,當游標并非從緩存中讀取數據,而確實觸發語句下發到DN上執行的條件下,該游標語句會被記錄,并且會進行語句、執行計劃增強,但當游標從緩存中讀取數據時,不進行記錄;當游標語句在匿名塊或者函數中使用時,當游標從DN上讀取較多數據但不完全使用時,無法記錄該游標在DN上的監控信息。
- JDBC執行的帶占位符語句,通常會補齊參數內容,但如果參數和原語句合起來長度超過64KB,則不記錄參數,或者如果是輕量化語句,直接下發到DN上執行,不記錄參數。
4、TopSQL擴展及應用
TopSQL功能是GaussDB(DWS)支持性能問題定位、語句劣化分析、審計回溯等重要功能的基石。在此基礎上,內核也拓展出了異常規則等一些高階用法,在日常使用中,用戶也對TopSQL提出了更高的要求,比如記錄子語句、記錄語句類型、提升算子級別語句監控準確性等諸多建議。為此,GaussDB(DWS)團隊會在此基礎上繼續演進,更好的服務用戶,提升用戶滿意度。
5、TopSQL實踐:常見問題定位
總結一下:
- 因數據量變化,導致作業執行時間增加,可以分析A2/B1/D1/G1,進而確認作業查詢的數據表是否有明顯的數據量增加;
- 因其它并發作業搶占,導致作業排隊,從而導致作業執行時間增加,可以分析A1/B1/D1,進而查看作業執行的同時期是否有大量并發作業在執行;
- 因其它作業而產生的CPU搶占,導致作業執行時間增加,可以分析A2/D1/E1,進而查看作業執行的同時期是否有大量并發作業在執行;
- 因其它作業而產生的IO搶占,導致作業執行時間增加,可以分析A2/F1,進而查看作業執行的同時期是否有大量并發作業在執行;
- I1中有結果情況,可通過提示的信息進行分析,或者進行SQL自適應診斷相關告警處理,SQL自適應診斷處理方法見:https://support.huaweicloud.com/performance-dws/dws_10_0013.html
- 對于enqueue異常排隊的情況H1,用戶可參考:GaussDB(DWS)資源管理排隊原理與問題定位-云社區-華為云 (huaweicloud.com),進行問題排查分析。
值得注意的是,發生資源爭搶時,可能會出現并發癥,即CPU、IO搶占,作業排隊現象都會發生,針對并發癥問題,可以逐步分析解決,比如:
第一步,調整作業執行順序,減少并發作業數量,減少阻塞時間;
第二步,定位出同時段執行的典型計算密集型、存儲密集型作業,先移動到其它時間段執行,減少對本作業的影響;
第三步,在無其他作業明顯干預的情況下,做進一步分析,
6、參考文獻:
- GaussDB for DWS 負載管理核心技術解密二: 白話歷史資源監視-云社區-華為云 (huaweicloud.com)
- GaussDB(DWS)資源管理排隊原理與問題定位-云社區-華為云 (huaweicloud.com)
點擊關注,第一時間了解華為云新鮮技術~
標簽:
- 世界觀焦點:智慧醫療”能夠實現醫療管理和服... 2022-12-15 18:29:15
- 【全球速看料】pr視頻軟件如何學習(pr視頻軟... 2022-12-15 18:29:15
- 當前時訊:哥倫比亞廣播公司推出幽靈之夏 2022-12-15 18:29:15
- 環球觀熱點:不愿給電池廠打工 多車企投錢自... 2022-12-15 18:29:15
- 世界即時看!合肥軌道交通8號線又一區間貫通! 2023-04-23 09:48:02
- 早上起床頭暈目眩是怎么回事_起床頭暈目眩怎么... 2023-04-23 09:32:06
- 特斯拉新款Model 3實車內飾曝光!兩款車型售價上漲 2023-04-23 09:25:24
- 網紅“減肥針”不是想打就能打 2023-04-23 08:58:36
- 每日速看!萬商云集“鏈”全球 2023-04-23 09:18:34
- 世界熱點!中國援喀麥隆雅溫得醫療分隊舉行義診 2023-04-23 08:53:03
- 快船主場輸38個罰球,船記:威少籃下17投零罰... 2023-04-23 08:37:01
- 每日頭條!word裁剪圖片形狀為正五邊形(word裁... 2023-04-23 08:27:09
- 消息!閑魚上怎么賺錢(閑魚怎么賺錢) 2023-04-23 08:23:02
- 大姨媽不能碰的12種食物_來大姨媽能吃菠蘿嗎 ... 2023-04-23 08:06:52
- 追夢解禁后加強與其身體對抗?小薩:不會 還... 2023-04-23 07:54:26
- 第28個世界讀書日|作為文化富礦的山東,還有... 2023-04-23 07:28:32
- 牛黃解毒片的功效與作用_牛黃清心丸的功效與作用 2023-04-23 07:07:19
- 有代溝什么意思_代溝什么意思_世界訊息 2023-04-23 07:07:14
- 世界微資訊!精選30余款菜肴推薦,時令食材搭... 2023-04-23 06:35:55
- 模擬經營、現場互動,蘇州市相城區創業培訓班... 2023-04-23 06:13:13
- 世界消息!車子碰撞保險公司怎么理賠的 2023-04-23 06:13:59
- 世界頭條:2023五一天津解放橋怎么去?坐地鐵... 2023-04-23 06:05:42
- 2023天津解放橋開橋時間是幾點到幾點 2023-04-23 06:21:13
- 每日視點!2023五一假期天津解放橋開橋只有5月... 2023-04-23 06:15:51
- 2023天津五一海河游船船票開售時間(附購票入... 2023-04-23 06:05:56
- 法師多肉可以露天養嗎 春夏之交帶錦的法師還... 2023-04-23 05:57:59
- 全球即時看!A股:這輪下跌或會持續很長時間 2023-04-23 06:01:07
- 塵世羈滄海月明完整版_塵世羈 2023-04-23 05:00:21
- 【熱聞】4月21號后要準備2644點券?公孫離機甲... 2023-04-23 05:14:23
- 白鱗鮭魚食譜_新鮮的白鱗鮭魚在哪釣_當前看點 2023-04-23 04:31:05
- 全球快看:羅伊斯好慘一男的,續約一事懸而未... 2023-04-23 04:37:17
- 落雁沉魚_關于落雁沉魚的簡介 2023-04-23 03:57:06
- 世界速讀:無良商人的再度抉擇,預告 2023-04-23 03:44:24
- 這群學生體驗“農人”生活,在希望的田野耕耘未來 2023-04-23 03:28:18