全部產品
Search
文件中心

AnalyticDB:Spark SQL診斷

更新時間:Apr 29, 2025

AnalyticDB for MySQL推出Spark SQL診斷功能,若您提交的Spark SQL存在效能問題,您可以根據診斷資訊快速定位、分析並解決效能瓶頸問題,最佳化Spark SQL。本文主要介紹如何進行Spark SQL效能診斷以及效能診斷的樣本。

前提條件

注意事項

僅支援診斷14天以內且執行成功的Spark SQL。

操作步驟

  1. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,在企業版、基礎版或湖倉版頁簽下,單擊目的地組群ID。

  2. 在左側導覽列,單擊診斷最佳化 > Spark SQL診斷最佳化

    查詢列表展示SQL查詢的更多資訊,例如具體的SQL語句、查詢提交時間、執行耗時等,詳細說明如下:

    欄位名

    欄位說明

    操作

    單擊診斷,查看執行詳情,包括詳細SQL語句以及診斷結果。

    SQL

    SQL語句。

    查詢ID

    查詢ID。

    執行ID

    Spark SQL應用中該SQL的順序ID。

    狀態

    SQL語句的執行狀態,包括:

    • 已完成

    • 運行中

    • 失敗

    開始時間

    查詢提交的時間。

    執行耗時

    SQL語句的執行耗時。

    最大運算元專屬時間

    運算元單獨佔用的最大執行時間。

    峰值記憶體

    查詢消耗的峰值記憶體。

    掃描資料

    查詢從儲存層返回到計算層的資料量。

  3. 單擊SQL語句對應操作列的診斷

  4. 查詢屬性頁面,單擊執行計畫頁簽來查看目標查詢的執行計畫樹圖。

  5. 在執行計畫樹右側,單擊查詢層級診斷結果,即可直接查看Query層級診斷結果

Query層級診斷結果

AnalyticDB for MySQL的Spark SQL診斷功能可以對Spark SQL查詢的Query層級的資訊進行統計,再在統計資訊的基礎上進行診斷並提供調優建議。

Join存在資料膨脹

  • 問題

    如果Join運算元的輸出行數大於輸入行數,則認為是不合理Join操作,會存在資料膨脹問題。最終導致較多計算資源和記憶體資源被佔用,查詢變慢。

  • 建議:

    最佳化代碼,例如提前過濾不參與Join的資料,以減少資料計算量。

掃描資料量傾斜

  • 問題

    Spark SQL運行期間掃描多表資料量之間差距過大,會在讀取資料時間上存在長尾效應,影響最終查詢效果。

  • 建議

    通過選擇合適的分布欄位來減少表掃描的資料量。