帶你掌握數倉的作業級監控TopSQL

来源:https://www.cnblogs.com/huaweiyun/archive/2023/04/20/17337163.html
-Advertisement-
Play Games

摘要:目前TopSQL功能被用戶廣泛使用,是性能定位、劣化分析、審計回溯等重要的基石,為用戶提供覆蓋記憶體、耗時、IO、網路、空間等多方面的監控能力。 本文分享自華為雲社區《GaussDB(DWS)監控工具指南(一)作業級監控TopSQL》,作者:幕後小黑爪 。 1、引言: 監控系統是智能化管理和自動 ...


摘要:目前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_STATISTICSPGXC_WLM_SESSION_STATISTICS,若需要對已經執行完成的作業進行分析,可查詢歷史TopSQL視圖GS_WLM_SESSION_ HISTORYPGXC_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語句記錄情況進行說明:

  1. 不記錄特殊數據定義語句,如:SET、RESET、SHOW、ALTER SESSION SET、SET CONSTRAINTS語句;
  2. 記錄數據定義語句,例如:執行CREATE、ALTER、DROP、GRANT、REVOKE和VACUUM語句;
  3. 記錄數據操作語句,例如:
    1. 執行SELECT、INSERT、UPDATE和DELETE語句。
    2. 執行explain analyze和explain performance場景。
    3. 執行查詢query級別/perf級別視圖
  4. ODBC下發作業,由於多語句原因,會記錄事務的BEGIN和end語句;
  5. JDBC下發作業,隨機性多記錄一條JDBC的內部語句
  6. 解析錯誤和語法報錯的異常不記錄
  7. 用戶手動CANCEL作業,顯示的監控數據可能為0;
  8. 當子語句開關打開後,只會記錄下發到DN上執行的子語句;
  9. 游標語句,當游標並非從緩存中讀取數據,而確實觸發語句下發到DN上執行的條件下,該游標語句會被記錄,並且會進行語句、執行計劃增強,但當游標從緩存中讀取數據時,不進行記錄;當游標語句在匿名塊或者函數中使用時,當游標從DN上讀取較多數據但不完全使用時,無法記錄該游標在DN上的監控信息。
  10. JDBC執行的帶占位符語句,通常會補齊參數內容,但如果參數和原語句合起來長度超過64KB,則不記錄參數,或者如果是輕量化語句,直接下發到DN上執行,不記錄參數。

4、TopSQL擴展及應用

TopSQL功能是GaussDB(DWS)支持性能問題定位、語句劣化分析、審計回溯等重要功能的基石。在此基礎上,內核也拓展出了異常規則等一些高階用法,在日常使用中,用戶也對TopSQL提出了更高的要求,比如記錄子語句、記錄語句類型、提升運算元級別語句監控準確性等諸多建議。為此,GaussDB(DWS)團隊會在此基礎上繼續演進,更好的服務用戶,提升用戶滿意度。

5、TopSQL實踐:常見問題定位

總結一下:

  1. 因數據量變化,導致作業執行時間增加,可以分析A2/B1/D1/G1,進而確認作業查詢的數據表是否有明顯的數據量增加;
  2. 因其它併發作業搶占,導致作業排隊,從而導致作業執行時間增加,可以分析A1/B1/D1,進而查看作業執行的同時期是否有大量併發作業在執行;
  3. 因其它作業而產生的CPU搶占,導致作業執行時間增加,可以分析A2/D1/E1,進而查看作業執行的同時期是否有大量併發作業在執行;
  4. 因其它作業而產生的IO搶占,導致作業執行時間增加,可以分析A2/F1,進而查看作業執行的同時期是否有大量併發作業在執行;
  5. I1中有結果情況,可通過提示的信息進行分析,或者進行SQL自適應診斷相關告警處理,SQL自適應診斷處理方法見:https://support.huaweicloud.com/performance-dws/dws_10_0013.html
  6. 對於enqueue異常排隊的情況H1,用戶可參考:GaussDB(DWS)資源管理排隊原理與問題定位-雲社區-華為雲 (huaweicloud.com),進行問題排查分析。

值得註意的是,發生資源爭搶時,可能會出現併發症,即CPU、IO搶占,作業排隊現象都會發生,針對併發症問題,可以逐步分析解決,比如:

第一步,調整作業執行順序,減少併發作業數量,減少阻塞時間;

第二步,定位出同時段執行的典型計算密集型、存儲密集型作業,先移動到其它時間段執行,減少對本作業的影響;

第三步,在無其他作業明顯干預的情況下,做進一步分析,

6、參考文獻:

  1. GaussDB for DWS 負載管理核心技術解密二: 白話歷史資源監視-雲社區-華為雲 (huaweicloud.com)
  2. GaussDB(DWS)資源管理排隊原理與問題定位-雲社區-華為雲 (huaweicloud.com)

 

點擊關註,第一時間瞭解華為雲新鮮技術~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如何編寫 Windows Server 的日誌篩選器,你需要先瞭解以下概念: 1、Windows Event Log:Windows Event Log 是 Windows Server 操作系統提供的一種記錄系統事件的機制,它可以記錄操作系統、應用程式、安全、系統和其他類型的事件。 2、Event ...
  • VMware17安裝Ubuntu22.04.2-Desktop詳細記錄 1. 前置準備 VMware軟體,這裡用的VMware17 Ubuntu系統鏡像文件(.iso文件) 官網下載:Ubuntu系統下載 | Ubuntu I Tell You舊版站點:MSDN, 我告訴你 - 做一個安靜的工具站 ...
  • Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,刪除文本等等。這也是Vim啟動後的預設模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器預設模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩衝中插入文本。大多數新用戶希望文本編輯器編輯過程中一 ...
  • 1. 數據分組 1.1. SQL的語句中具有分組功能的是GROUP BY和PARTITION BY 1.1.1. 兩者都有數學的理論基礎 1.1.2. 都可以根據指定的列為表分組 1.1.3. 區別僅僅在於,GROUP BY在分組之後會把每個分組聚合成一行數據 1.1.4. GROUP BY的作用是 ...
  • 功能02-商鋪查詢緩存02 知識補充 (1)緩存穿透 https://blog.csdn.net/qq_45637260/article/details/125866738 緩存穿透(cache penetration)是指用戶訪問的數據既不在緩存當中,也不在資料庫中。出於容錯的考慮,如果從底層數據 ...
  • MySQL 中的集群部署方案 前言 MySQL Replication InnoDB Cluster InnoDB ClusterSet InnoDB ReplicaSet MMM MHA Galera Cluster MySQL Cluster MySQL Fabric 參考 MySQL 中的集群 ...
  • 本文分享自天翼雲開發者社區《創建本地yum倉庫》,作者: zzzzgj; 背景 有的部署環境不通外網,但希望繼續使用yum命令下載依賴包而不修改部署腳本邏輯。因此記錄一個本地repo的建立方法。 1、獲取依賴包 # 如在通網的機器上下載openssl-devel所有依賴yumdownloader - ...
  • 我們很高興向大家宣佈,2023年4月14日,Taier 正式發佈 1.4 版本。自2022年2月份 Taier 正式開源以來,收到了很多開發者和行業用戶的積極評價,在諸多生產環境中已得到充分應用。Taier 1.4版本正是吸收了各類實踐經驗及大家的建議,進行了此次迭代優化。 本次更新不僅包含了性能優 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...