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