AnalyticDB MySQL版的SQL診斷功能可以對SQL查詢的Query、Stage和運算元(Operator)層級的資訊分別進行統計,再在統計資訊的基礎上進行診斷並提供調優建議。本文介紹如何查看和分析Query層級診斷結果。
診斷結果類型
說明 查看Query層級診斷結果的方法,請參見查看診斷結果。
查詢返回用戶端的資料量較大
查詢消耗的記憶體資源較大
- 問題查詢消耗了大量記憶體,可能導致其他查詢無法執行、執行變慢甚至影響到AnalyticDB MySQL版叢集整體的穩定性。說明 您可以在查詢詳情頁面的查詢屬性地區查看峰值內存資訊。查看方法,請參見查看查詢屬性。
- 建議
先定位查詢消耗較大記憶體的原因,再通過AnalyticDB MySQL版SQL診斷中的執行計畫找到消耗記憶體較多的Stage或者運算元,更多詳情,請參見消耗記憶體的慢查詢和使用執行計畫分析查詢。
查詢產生的Stage個數較多
查詢讀取的資料量較大
- 問題查詢讀取的資料量較大,會佔用較多的磁碟IO資源,影響其他查詢或者資料的寫入過程。說明 您可以在查詢詳情頁面的查詢屬性地區查看掃描數據的資訊。查看方法,請參見查看查詢屬性。
- 建議
先找到讀取資料量較大的Stage以及相關的表掃描運算元(TableScan)。您可以在AnalyticDB MySQL版SQL診斷的Stage層或運算元層執行計畫中的統計信息地區查看對應Stage掃描行數、掃描量,或TableScan運算元的輸入行數和輸入大小來判斷Stage和TableScan運算元的掃描資料量。更多詳情,請參見Stage統計資訊和運算元統計資訊。
找到掃描資料量較大的表掃描運算元後,您可以考慮如下方式進行調優:- 在查詢中增加AND過濾條件。
- 調整已有的過濾條件,減少過濾後的資料量。
- 檢查是否存在沒有下推的過濾條件。若存在,請參見過濾條件沒有下推中的建議進行最佳化。