日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Query Profile診斷建議

Serverless StarRocks基于可視化的Query Profile提供了診斷建議功能,您可以在查看Query Profile的同時,根據Query Profile診斷建議分析SQL性能問題、優化SQL性能。

使用Query Profile診斷建議

查看SQL語句診斷建議

執行詳情頁面,如果存在SQL語句層面的診斷建議,則會在右側執行概覽面板中展現相關內容。SQL語句層面診斷建議說明,請查看SQL語句診斷建議image

查看SQL算子診斷建議

執行詳情頁面,選中右上角有黃色標記的算子節點,會在右側面板中展現出關于該算子的診斷建議。SQL算子診斷建議說明,請查看SQL算子診斷建議image

SQL語句診斷建議

Serverless StarRocks在分析Query Profile指標時,會自頂向下逐層分析各個層級的指標。在執行概覽頁面,除算子層面的指標外,系統匯總其他指標的分析結果,作為SQL語句整體的診斷建議,為SQL性能調優提供直觀指導。

SQL語句層面的診斷建議包含以下內容:

  • Query Profile Summary部分的指標是否正常。例如,CollectProfileTime指標是否過大。

  • Query Profile Planner部分的指標是否正常。例如,CoordDeliverExec指標是否正常。

  • Fragment的指標是否正常。例如,是否存在Fragment各個實例執行時間傾斜的情況。

  • 整合算子層面指標分析結果,匯總提示本次診斷分析的各個算子診斷建議數據。

SQL算子診斷建議

Serverless StarRocks基于Wall Time、執行CPU成本等指標相關模型選擇需要診斷的算子,根據算子類別解讀Query Profile指標,并給出算子的診斷建議。通常Wall Time占整體SQL語句執行時間比重越大的算子優化收益越大。但是,基于執行計劃樹整體的上下游算子的聯動關系,即使對執行時間占比小的算子進行調整,也可能會觸發計劃樹結構的優化重組,從而間接提升SQL語句的執行性能。

Query Profile算子診斷建議,分為通用算子的診斷建議和特定算子的診斷建議。本文列舉一些常見的診斷建議,更多的診斷建議在實際使用Query Profile診斷功能時,會輸出相應的診斷結果概要說明、建議以及詳細診斷原因說明。

通用算子診斷建議

通用算子診斷建議是指該診斷建議適用于所有算子。

算子執行時間占比過高

StarRocks是個MPP執行引擎,一個算子通常會在多個節點以及同一個節點多個實例并發執行。當某個算子多個實例的最大執行時間占整個SQL執行時間的比例超過設置的閾值,且診斷引擎基于已有數據無法更進一步的診斷執行時間占比過高的原因時,系統會給出“算子執行時間占比過高”的診斷建議。請關注并優化執行時間占比過高的算子。

Scan算子診斷建議

診斷建議

問題描述

建議措施

數據傾斜

StarRocks數據在各個存儲節點分布不均,使得某些節點在讀取數據時需要掃描更多的數據,導致查詢延遲。

建議檢查并優化分桶鍵設置,確保數據更均勻分布。

IO傾斜

Scan算子多個實例在讀取數據時,部分實例花費的時間顯著大于其它實例時間。

建議從以下方面進行排查:

  • 資源層面:檢查是否存在節點的IO使用率明顯高于其它節點或IO線程池打滿的情況。

  • 數據模型層面:檢查是否存在查詢的數據在節點上分布不均的情況。

數據掃描未有效過濾

基于掃描原始數據量以及最終查詢語句輸出數據量、結合Query Profile執行樹信息進行判斷。當Scan算子本身掃描數據量較大,同時輸出給下游算子的數據量未顯著過濾的情況下,認為數據掃描未有效過濾。

StarRocks提供索引、謂詞下推、Join Runtime Filter等多種方式過濾Scan算子的數據量,可以通過多種方式來提高Scan算子的掃描過濾效率。建議從以下方面進行排查:

  • 檢查表結構是否合理。

  • 檢查排序鍵是否合適。

  • 檢查是否需要添加索引。

  • 檢查查詢條件是否包含函數,導致無法用于過濾數據。

Join算子診斷建議

診斷建議

問題描述

建議措施

Join結果膨脹

正常情況下,Join算子的輸出結果行數一般小于等于輸入行數。如果輸出結果顯著大于輸入結果,則視為Join結果膨脹。此種情況通常是缺少Join條件造成Cross Join,或者Join條件錯誤導致Join的兩張表數據出現1:N的情況。還有一些情況是缺少統計信息、或者數據變更后統計信息過期,導致優化器選擇了錯誤的計劃。

建議從以下方面進行排查:

  • 優化Join條件設置:檢查Join條件是否缺失、是否符合業務邏輯,增添必要條件以精確匹配,避免Join結果膨脹。

  • 優化多表Join順序:如果是多表Join,檢查Join順序是否正確。如果不正確,可以設置session參數disable_join_reordertrue來手動控制查詢中的Join順序。

Join build表選擇不合理

在Join算子中,Build階段系統通常會在內存中創建哈希表,Build表數據量過大會消耗更多的內存資源。此種情況,通常是因為執行優化器沒有正確的選擇Build表所致。

建議從以下方面進行排查:

  • 檢查統計信息是否收集或過期。

  • 通過設置session參數disable_join_reordertrue來手動控制查詢中的Join順序。

Join不應該使用Broadcast

當小表與大表Join時,如果小表遠小于大表,Broadcast Join可以將小表廣播到大表所在節點,避免大表的數據重分布,從而有效降低了網絡傳輸的開銷。但某些情況下,由于統計信息錯誤等原因,優化器錯誤地估計了表的大小,導致較大的表也使用了Broadcast Join,增加網絡和計算的成本。

建議在JOIN關鍵字后添加[shuffle] Hint,限制使用Broadcast Join。

Aggregate算子診斷建議

診斷建議

問題描述

建議措施

Aggregate本地聚合度低

在執行聚合操作時,各個計算節點通常會先在本地聚合獲取較小聚合結果后再分發到其它節點,以減少網絡數據傳輸。但某些情況下,本地聚合時未能有效縮減數據量,不僅不能減少網絡數據傳輸,反而會消耗大量的計算資源。

如果Aggregate整體(包括非本地聚合部分)執行時間較長,則建議通過修改Session參數new_planner_agg_stage=1關閉二階段聚合。

相關文檔

如果您想了解Query Profile的結構和指標,詳情請參見Query Profile介紹