AnalyticDB MySQL版叢集提供了SQL診斷功能,支援通過多種維度檢索出合格SQL查詢(如慢查詢),並將檢索結果以映像化的方式展示,您還可以將檢索結果下載儲存到本地進行查看。本文介紹如何使用SQL診斷中的查詢監控圖和查詢列表。
查詢監控圖
您可以在SQL診斷中的查詢監控地區查看指定時間範圍內,查詢執行耗時的分布情況,方便快速定位執行耗時間長度的查詢。
圖中每個色塊即代表一次查詢。
矩形的顏色沒有特殊含義,僅用來區分不同查詢。色塊長度越長,表示對應查詢的執行耗時越長。
將滑鼠放在色塊上即可查看對應查詢的相關資訊(例如,查詢開始或結束時間、掃描量等),單擊詳情即可進入目標查詢的詳情頁來查看查詢屬性、查詢語句和執行計劃等資訊。更多詳情,請參見使用執行計畫分析查詢。
查詢監控中最多展示1萬個查詢,每個查詢的具體資訊會在監控圖下方的SQL列表中展示。更多詳情,請參見SQL列表。
查詢監控僅展示整體檢索(如檢索最近5分鐘內耗時最長的100個查詢)的結果,而SQL列表右上方的進階搜尋不會影響查詢監控的結果展示。更多詳情,請參見檢索方式。
SQL列表
相較於查詢監控圖,查詢列表能夠展示SQL查詢的更多資訊,例如具體的SQL語句、訪問源地址等。同時您還可以通過查詢列表右上方的進階搜尋功能對列表中的結果進行進一步篩選(這裡的篩選結果並不會影響查詢監控圖的結果展示),協助您更精準地定位到有問題的查詢。
欄位名 | 欄位說明 | 使用說明 |
操作 | 單擊診斷,查看執行詳情,包括SQL語句、統計資訊、執行計畫以及診斷結果等。 | 進入診斷頁面,單擊執行計畫分析查詢。具體操作,請參見使用執行計畫分析查詢。 |
SQL | SQL語句。 | 使用者可以單擊複製完整SQL。 |
開始時間 | 查詢提交的時間。 | 無 |
查詢ID | 查詢ID。 | 無 |
訪問源地址 | 與用戶端建立串連的IP地址。 | 在診斷與最佳化頁面,單擊串連資訊,查看訪問源地址。 |
資料庫 | 用戶端建立串連的資料庫名。 | 使用者可以使用進階搜尋功能搜尋出資料庫變更的SQL。 |
狀態 | SQL語句的執行狀態,包括:
| 無 |
總耗時 | SQL語句從提交到最終執行完成的總耗時。 | 總耗時=排隊耗時+執行計畫耗時+執行耗時。 |
排隊耗時 | SQL語句從提交到AnalyticDB MySQL版接入節點後到開始執行前的排隊時間。 | AnalyticDB MySQL版在接入節點進行了流量控制,當並發較大時,超過流量控制隊列大小的查詢會進行排隊,且排隊時間較長。如果此時計算資源水位較低,可以嘗試調大隊列,具體操作,請參見Interactive型資源群組的優先順序隊列與並發控制;如果此時計算資源水位較高,則需要進行Bad SQL尋找並定位原因。關於接入節點的詳情,請參見整體架構。 |
執行計畫耗時 | 產生執行計畫的耗時。 | SQl語句提交到接入節點後會產生執行計畫,執行計畫耗時較長的可能原因包括:
如果SQL語句較複雜,可以嘗試降低SQL複雜度,如減少Join的個數;如果接入節點壓力較大,可以查看是否有較多資料返回到用戶端或查詢並發是否較大,具體詳見Query層級診斷結果。 |
執行耗時 | SQL語句的執行耗時。 | 可以根據執行耗時欄位排序,排除排隊耗時和執行計畫耗時的影響,尋找到消耗資源的SQL。 |
返回資料 | Select語句返回到用戶端的資料量。 | 返回到用戶端的資料量不宜過大,資料量過大會導致查詢佔用前端隊列資源,影響其他查詢的提交和執行。使用者可以根據返回資料大小進行排序,找到返回資料量較大的查詢。 |
使用者名稱 | 用戶端建立串連時使用的使用者名稱。 | 在診斷與最佳化頁面,單擊串連資訊,查看使用者名稱和使用者串連數。 |
資源群組 | 執行SQL的資源群組名稱。 | 無 |
峰值記憶體 | 查詢消耗的峰值記憶體。 | AnalyticDB MySQL版在執行SQL的過程中,是分階段(Stage)執行的,有依賴關係的階段會串列執行,無依賴關係的階段會並存執行,因此查詢消耗的記憶體存在一個峰值,峰值記憶體可以體現查詢對於記憶體資源的佔用量。 |
掃描資料 | 查詢從儲存層返回到計算層的資料量。 | 掃描資料量的大小在一定程度上能體現查詢對儲存層的壓力,讀取的資料量越大,消耗的磁碟IO資源也越大,在計算層的處理也會消耗更多資源,影響查詢速度。 |
總的Stage個數 | 查詢產生的總的Stage個數。 | Stage的個數多少,在一定程度上能體現一條查詢語句的複雜度,Stage個數越多,AnalyticDB MySQL版在執行過程中需進行的網路互動就越多,對系統整體的壓力也越大。如果某些查詢的Stage個數較多,需要進行相應的調優。關於Stage的概念,請參見查詢流程和執行計畫。 |
ETL的寫錶行數 | ETL相關SQL寫出到目標表的行數。 | 無 |
您可以在SQL列表頁簽下執行如下操作:
支援的操作 | 說明 |
下載 | 單擊下載即可將當前的查詢結果儲存為Excel表格,查詢結果表格會自動儲存在最近5次的下載的下拉式清單中。 說明 當前單次最多支援下載10萬條記錄。 |
最近5次的下載 | 從最近5次的下載下拉式清單中選擇需要下載的SQL查詢搜尋結果即可完成下載。 |
進階搜尋 | 單擊顯示高級搜索,根據業務需要選取查詢維度,例如按照資源組或訪問源地址維度對查詢監控的搜尋結果進行進一步的篩查。 |
診斷 | 單擊操作欄中的診斷,即可進入目標查詢的詳情頁來查看查詢屬性、查詢語句和執行計劃等資訊。更多詳情,請參見使用執行計畫分析查詢。 |
SQL列表右上方的進階搜尋支援對整體檢索的結果進行進一步篩選,篩選條件的可選取值是整體檢索結果中已有的取值,而不是當前AnalyticDB MySQL版叢集中的所有取值。更多詳情,請參見檢索方式。
當整體檢索條件選擇正在運行的查詢時,檢索結果僅顯示執行耗時超過10s的SQL查詢詳情,且在SQL列表中會展示資源消耗排名列,資源消耗排名的數值越小,說明該查詢消耗的CPU、記憶體等資源越多。
SQL列表的SQL列,最長支援顯示5120個字元,超出字元限制的SQL語句會被截斷顯示。您可以在下載的Excel檔案中,或目標查詢詳情頁的查詢語句頁簽下查看完整的SQL。