全部產品
Search
文件中心

Hologres:Query洞察

更新時間:Aug 14, 2024

Query洞察旨在結合慢Query日誌和表統計資訊日誌系統資料表hg_table_info,快速擷取當前Query的執行資訊,例如Query進程的資源消耗、Query所涉及的表的中繼資料,以及Query對應的執行計畫(plan)。同時可以通過Query洞察快速判斷當前Query是否產生了DDL衝突,以及表鎖情況,輔助業務進一步排查問題和處理問題。

前提條件

存在已登入執行個體,請參見登入執行個體

進入Query洞察

您可從HoloWeb的診斷與最佳化頁面直接進入Query洞察,也可通過HoloWeb的SQL編輯器歷史慢 Query跳轉至Query洞察頁面。

  1. 登入Hologres管理主控台

  2. 在頂部功能表列左側,選擇相應的地區。

  3. 單擊前往HoloWeb,進入HoloWeb開發頁面。

  4. 進入Query洞察頁面。

    直接進入Query洞察

    在頂部選擇診斷與最佳化,單擊左側的元倉分析 > Query洞察,進入Query洞察頁面。image

    跳轉Query洞察

    在HoloWeb中,SQL編輯器歷史慢 Query也可以跳轉至Query洞察。跳轉方式如下:

    • SQL編輯器:如果SQL在HoloWeb的SQL編輯器中運行,則執行時間大於1 s、且含有Query ID的SQL可以直接跳轉至Query洞察。

    • 歷史慢 Query:在Query列表中,單擊目標SQL操作列的image表徵圖可以跳轉至Query洞察。

    在Query洞察頁面,您可以查看Query中繼資料Table中繼資料,及進行Plan可視化表鎖分析

Query中繼資料

Query中繼資料來源於Hologres慢Query日誌,預設只採集執行時間大於100 ms的DML和所有的DDL(查詢時僅能展示執行時間大於1 s的DDL),且慢Query日誌需要一定的許可權才能查詢,詳情請參見慢Query日誌查看與分析。您需要在Query中繼資料頁簽選擇對應的執行個體名Query ID,單擊查詢即可展示Query中繼資料。

  • 基本資料

    展示Query所屬的執行個體ID、DB以及執行個體版本。

  • Query資訊

    展示Query的基本資料,採集自慢Query日誌,包括執行的使用者、執行狀態、所用的執行引擎等。

  • 資源消耗

    展示Query運行過程中的資源消耗情況,採集自慢Query日誌,包括掃描函數、CPU消耗等。

  • 其他資訊

    Query的額外擴充資訊,採集自慢Query日誌,包括Client IP等。

  • SQL

    當前的Query具體內容,可以對Query進行格式化(更加直觀友好的展示Query)以及複製Query。

  • Query Detail

    Query如果是傳參數形式執行,Query Detail將會採集出具體的參數值。可以選擇將參數合并到SQL裡。

  • 執行計畫

    當前Query的Plan,採集自慢Query日誌的Plan欄位,需要注意的是,僅執行時間大於10 s的Query才會採集Plan。可以使用可視化功能跳轉至Plan可視化,通過圖形化的能力分析Plan,以便進一步對Query調優。Plan詳情請參見EXPLAIN和EXPLAIN ANALYZE

  • Statistics

    當前Query的運行資訊,採集自慢Query日誌的Statistics欄位。會展示每個運算元的詳細消耗資訊,包括掃描的行數、運算元耗時等。可以根據Statistics進一步分析運算元的消耗,以便進一步對Query調優。

  • 讀寫表資訊

    展示當前Query涉及的表(讀或寫),可以單擊:

    • 表中繼資料:跳轉至表中繼資料頁面,查看當前表的相關中繼資料。但需要注意表的中繼資料採集自hg_table_info表,預設T+1日更新資料,如果表是當天建立的,會查詢不到。

    • 表鎖分析:跳轉至表鎖分析頁面,可以查看當前Query是否有鎖,僅會檢測DML相關的鎖。例如走Fixed Plan的SQL查詢變慢,可以使用表鎖分析查看錶是否同時存在HQE(Hologres自研執行引擎)的DML,導致Query耗時增加。

  • DDL衝突分析

    展示當前Query執行的前後1min時間內,涉及到的表是否產生了DDL操作,用於輔助判斷是否存在DDL衝突,導致Query失敗報錯:Query is canceled

  • 錯誤資訊

    如果是失敗的Query,將顯示失敗原因的詳細資料。同時HoloWebQuery洞察上線SQL智能診斷功能,會將新增的失敗原因和解決方案自動返回錯誤資訊中,以方便您更好地處理錯誤SQL。更多常見的失敗SQL和解決方案可以參考Hologres SQL語句的常見問題

Table中繼資料

Table中繼資料來源於Hologres的表統計資訊日誌系統資料表hg_table_info,每天淩晨採集彙報一次,T-1更新,因此當天的Table中繼資料只能在第二天查詢。

使用Table中繼資料可以直接從Query中繼資料的表資訊跳轉,即可查看錶對應的中繼資料。同時也可以手動輸入表的相關資訊(所在執行個體名、資料庫、Schema)以及表的中繼資料收集時間,即可查看錶對應的中繼資料資訊。

  • 基本資料

    包含表名、是否分區,以及分區對應的資訊。

  • 表中繼資料資訊

    包含表的建立時間,收集時間,儲存量等資訊。

  • 表屬性資訊

    展示當前表設定的索引,包括PK、Distribution Key等。

  • 表結構資訊

    展示當前表的結構,包含欄位及欄位類型、是否可空、有無Default值。

Plan可視化

Plan可視化用於將慢Query日誌中的plan欄位進行可視化展示,但需要注意,僅運行耗時超過10 s的Query才會採集plan資訊。plan詳情請參見EXPLAIN和EXPLAIN ANALYZE

表鎖分析

表鎖分析可以查詢當前SQL是否產生HQE的DML(INSERT、UPDATE、DELETE)操作,用於輔助診斷SDK的SQL因為鎖而導致執行慢的問題。如果同一時間內,一個表同時存在SDK或HQE的Query和HQE的DML Query,則說明有鎖。建議盡量避免同一時間執行兩種操作。

使用Query洞察排查常見問題

  • 報錯:relation with OID xxx does not exist

    排查方法:通常是由於Query涉及到的表發生了TRUNCATE或DROP等操作,導致表的oid發生了變化。可以使用Query洞察查看報錯的Query ID,確認同一時間是否存在DDL鎖。image

  • 報錯:query is canceled

    排查方法:當前Query執行的同一時間,涉及到的表執行了TRUNCATE或DROP等DDL操作,導致報錯。可以將報錯的Query ID輸入到Query洞察中進行查詢,在Query中繼資料頁簽的DDL衝突分析地區可以看到表的DDL操作。image

  • SDK的SQL延遲高

    排查方法:如果SDK的SQL延遲較高,可以通過Query洞察查看是否同一時間表有HQE的SQL搶鎖,如下樣本,一個SDK的SQL耗時18s,在讀寫表資訊地區單擊表鎖分析。image可查看到同一時間存在HQE的DML。HQE的DML是表鎖,會導致SDK的Query等鎖,從而出現耗時增加。若是不存在HQE的DML,則說明沒有表鎖,請前往最佳化寫入和更新效能進一步排查原因。