SQL Pattern

更新時間:
Copy as MD

AnalyticDB for MySQL的即時統計分析功能提供了SQL Pattern指標特性,有效提升智能診斷效率,能夠對相似的SQL進行彙總,並呈現出彙總後的特性。

背景資訊

SQL Pattern是依託於全量且即時的SQL而產生的功能,通過對SQL進行分類、診斷和分析,彙總相似SQL為一類SQL,有效提升智能診斷的效率。同時,SQL Pattern的彙總結果能作為資料庫最佳化的有效依據。針對導致執行個體壓力過大的Bad SQL,使用者還可以通過攔截功能,對其進行攔截,快速恢複執行個體,詳情請參見Persist plan and Query-Blocker

功能說明

SQL Pattern具備以下功能。

  • Pattern彙總:根據SQL文本,將相似的SQL進行分組。

  • Pattern宏觀統計:建立均值與最值比較以及每個Pattern關鍵計量的總量及其佔比。

  • 異常SQL排查:排查出異於歷史的Pattern並提供切入功能,直達問題SQL,擷取診斷結果。

注意事項

僅支援查看過去14天內的SQL Pattern記錄,每次查詢的時間範圍最長為24小時。

操作步驟

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

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

  3. 單擊SQL Pattern頁簽。

    預設展示最近30分鐘的SQL Pattern。您可以通過SQL關鍵字或時間範圍搜尋SQL Pattern。

    SQL Pattern列表各項參數說明如下:

    參數

    說明

    操作

    單擊查看詳情,查看特定SQL Pattern的詳細資料。更多資訊,請參見Pattern分析

    用戶名

    提交Pattern相關SQL的資料庫使用者名稱。

    客戶端IP

    提交Pattern相關SQL的用戶端IP地址。

    SQL Pattern

    SQL Pattern的具體語句。您可以單擊2複製完整的SQL。

    CPU Cost總量

    在查詢時間範圍內,Pattern相關SQL執行時佔用CPU的總時間。括弧中的百分比表示該Pattern執行時佔用CPU的總時間占所有Pattern執行時佔用CPU的總時間的比例,若比例超過30%將自動高亮顯示。

    通過觀察PatternCPU Cost佔比,可以初步判斷該時段內某類查詢對CPU消耗的影響是否較大,您也可以結合CPU監控指標進一步分析。

    點擊查看CPU Cost總量佔比的計算方法

    假設有5SQL(分別為:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3屬於Pattern1;SQL4、SQL5屬於Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5對應的CPU Cost50 ms,1 s,70 ms,1.5 s,1 s。則:

    • Pattern1CPU Cost總量1.12 s。計算方法為0.05‬s+1s+0.07s=1.12s

    • Pattern2CPU Cost總量2.5 s。計算方法為1.5‬s+1s=2.5s

    • Pattern1CPU Cost總量佔比30.9392%。計算方法為1.12/(1.12+2.5)*100%=30.9392%

    • Pattern2CPU Cost總量佔比69.0607%。計算方法為2.5/(1.12+2.5)*100%=69.0607%

    峰值內存總量

    在查詢時間範圍內,Pattern相關SQL使用的峰值記憶體總和。括弧中的百分比表示該Pattern峰值記憶體總和占所有Pattern峰值記憶體總和的比例,若比例超過30%將自動高亮顯示。

    通過觀察Pattern的峰值記憶體佔比,可以初步判斷該時段內某類查詢對記憶體消耗的影響是否較大,您也可以結合計算記憶體使用量率監控指標進行進一步分析。

    點擊查看峰值記憶體總量佔比的計算方法

    假設有5SQL(分別為:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3屬於Pattern1;SQL4、SQL5屬於Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5對應的峰值記憶體為1 GB,2 GB,3 GB,3 GB,1 GB。則:

    • Pattern1的峰值記憶體總量6 GB。計算方法為1 GB+2 GB+3GB=6 GB

    • Pattern2的峰值記憶體總量4 GB。計算方法為1 GB+3 GB=4 GB

    • Pattern1的峰值記憶體總量佔比60%。計算方法為6/(6+4)*100%=60%

    • Pattern2的峰值記憶體總量佔比40%。計算方法為4/(6+4)*100%=40%

    耗時總量

    在查詢時間範圍內,Pattern相關SQL的執行耗時總和。括弧中的百分比表示該Pattern的執行耗時總和占所有Pattern執行耗時總和的比例,若比例超過30%將自動高亮顯示。

    通過觀察Pattern的執行耗時佔比,可以初步判斷該時段內某類查詢對查詢RT監控指標增長的影響是否較大,您也可以結合查詢RT監控指標進一步分析。

    點擊查看耗時總量佔比的計算方法

    假設有5SQL(分別為:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3屬於Pattern1;SQL4、SQL5屬於Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5對應的耗時為50 ms,1 s,70 ms,1.5 s,1 s。則:

    • Pattern1的耗時總量1.12 s。計算方法為0.05‬s+1s+0.07s=1.12s

    • Pattern2的耗時總量2.5 s。計算方法為1.5‬s+1s=2.5s

    • Pattern1的耗時總量佔比30.9392%。計算方法為1.12/(1.12+2.5)*100%=30.9392%

    • Pattern2的耗時總量佔比69.0607%。計算方法為2.5/(1.12+2.5)*100%=69.0607%

    數據讀取總量

    在查詢時間範圍內,Pattern相關SQL讀取資料的總量。括弧中的百分比表示該Pattern讀取資料總量占所有Pattern讀取資料總量的比例,若比例超過30%將自動高亮顯示。

    通過觀察Pattern的讀取資料佔比,可以初步判斷該時段內某類查詢的資料讀取量是否較大,您也可以結合表讀取結果資料量監控指標進一步分析。

    點擊查看資料讀取總量佔比的計算方法

    假設有5SQL(分別為:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3屬於Pattern1;SQL4、SQL5屬於Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5對應的資料讀取量為1 GB,2 GB,3 GB,3 GB,1 GB。則:

    • Pattern1的資料讀取總量6 GB。計算方法為1 GB+2 GB+3GB=6 GB

    • Pattern2的資料讀取總量4 GB。計算方法為1 GB+3 GB=4 GB

    • Pattern1的資料讀取總量佔比60%。計算方法為6/(6+4)*100%=60%

    • Pattern2的資料讀取總量佔比40%。計算方法為4/(6+4)*100%=40%

    數據讀取Cost總量

    在查詢時間範圍內,Pattern相關SQL讀取資料時佔用CPU的總時間。括弧中的百分比表示該Pattern讀取資料佔用CPU的總時間占所有Pattern讀取資料佔用CPU總時間的比例,若比例超過30%將自動高亮顯示。

    通過觀察Pattern的讀取資料佔比,可以初步判斷該時段內某類查詢的讀取資料時佔用CPU的總時間是否較大。如果讀取資料時佔用CPU的總時間增大,則會影響預留節點(儲存節點)的CPU使用率,您也可以結合預留節點CPU監控指標原儲存節點CPU監控指標進一步分析。

    點擊查看資料讀取Cost總量佔比的計算方法

    假設有5SQL(分別為:SQL1、SQL2、SQL3、SQL4、SQL5),SQL1、SQL2、SQL3屬於Pattern1;SQL4、SQL5屬於Pattern2。SQL1、SQL2、SQL3、SQL4、SQL5對應的資料讀取Cost50 ms,1 s,70 ms,1.5 s,1 s。則:

    • Pattern1的資料讀取Cost總量1.12 s。計算方法為0.05‬s+1s+0.07s=1.12s

    • Pattern2的資料讀取Cost總量2.5 s。計算方法為1.5‬s+1s=2.5s

    • Pattern1的資料讀取Cost總量佔比30.9392%。計算方法為1.12/(1.12+2.5)*100%=30.9392%

    • Pattern2的資料讀取Cost總量佔比69.0607%。計算方法為2.5/(1.12+2.5)*100%=69.0607%

    平均CPU Cost

    在查詢時間範圍內,Pattern相關SQL執行時佔用CPU時間的均值。

    最大CPU Cost

    在查詢時間範圍內,Pattern相關SQL執行時佔用CPU時間的最大值。

    平均表讀取CPU Cost

    在查詢時間範圍內,Pattern相關SQL讀取資料時佔用CPU時間的均值。

    最大表讀取CPU Cost

    在查詢時間範圍內,Pattern相關SQL的讀取資料時佔用CPU時間的最大值。

    執行次數

    在查詢時間範圍內,Pattern相關SQL的執行次數。如果執行個體出現資源水位突增的情況,使用者可以通過執行次數排序,查看執行個體運行異常時段哪些SQL執行次數較多,並進一步分析這些SQL執行次數突增是否正常。

    失敗次數

    在查詢時間範圍內,Pattern相關SQL的執行失敗次數。

    平均總耗時

    在查詢時間範圍內,Pattern相關SQL的平均查詢耗時,單位毫秒(ms)。

    最大總耗時

    在查詢時間範圍內,Pattern相關SQL的最大查詢耗時,單位毫秒(ms)。通過比較最大總耗時和平均查詢時間,可以瞭解指定Pattern的耗時增加是否受到其他SQL的影響。如果在執行個體運行正常時段內最大總耗時和平均查詢時間接近,那麼在執行個體運行異常時段當前pattern的耗時增加可能是受到了其他SQL的影響。

    平均執行耗時

    在查詢時間範圍內,Pattern相關SQL的平均執行耗時,單位毫秒(ms)。

    最大執行耗時

    在查詢時間範圍內,Pattern相關SQL的最大執行耗時,單位毫秒(ms)。執行耗時的定義,詳見查詢監控圖和SQL列表介紹

    平均峰值內存

    在查詢時間範圍內,Pattern相關SQL的平均峰值記憶體,單位Byte。

    最大峰值內存

    在查詢時間範圍內,Pattern相關SQL的最大峰值記憶體,單位Byte。通過比較最大峰值記憶體和平均峰值記憶體,您可以判斷指定SQL使用的記憶體資源的穩定性。如果最大峰值記憶體遠大於平均峰值記憶體,說明當前PatternSQL可能存在掃描資料量增加或者執行計畫改變的問題,可以單擊查看詳情,在查詢詳情頁面,查看SQL列表進一步定位原因。

    平均掃描量

    在查詢時間範圍內,Pattern相關SQL的平均掃描量,單位MB。

    最大掃描量

    在查詢時間範圍內,Pattern相關SQL的最大掃描量,單位MB。通過比較最大掃描量和平均掃描量,可以判斷同類PatternSQL的資料讀取量的穩定性。如果出現最大掃描量遠大於平均掃描量的情況,說明資料讀取量不穩定,則需判斷是否為正常情況。

    錶名

    SQL Pattern掃描的資料庫表。

Pattern分析

Pattern分析頁面以圖形化的方式展示SQL在時間維度上的執行次數、查詢耗時、執行耗時、掃描量以及峰值記憶體等重要指標,其中查詢耗時、執行耗時、掃描量和峰值記憶體指標分別提供了最大值和平均值,方便使用者進行比較和分析。SQL列表提供了當前Pattern在分析時段內的所有相關的SQL,您可以單擊診斷,查看SQL的診斷結果和執行計畫,具體操作,參見使用執行計畫分析查詢

SQL Pattern頁簽的SQL Pattern列表中,單擊查看詳情,進入Pattern分析頁面,您可以查看SQL Pattern多個指標的時序變化和SQL列表。

相關API