全部產品
Search
文件中心

AnalyticDB:SQL Pattern 對比

更新時間:Sep 19, 2026

SQL Pattern對比用於分析同一AnalyticDB for MySQL叢集在兩個時間視窗內的SQL Pattern差異,協助定位新增或變化的SQL Pattern,縮小效能問題排查範圍。

功能介紹

SQL Pattern對比用於分析同一叢集在兩個時間視窗內的SQL Pattern差異,支援:

  • 查看目標視窗中新出現的 SQL Pattern。

  • 查看兩個視窗均出現、但執行次數或資源消耗在目標視窗增長的 SQL Pattern。

  • 按執行次數、CPU Cost、Shuffle 資料量、峰值記憶體和資料讀取量五個維度查看並排序候選 SQL Pattern。

SQL Pattern 對比會非同步產生一份可重複查看的報告。報告用於縮小排查範圍,不能單獨證明 SQL 是叢集效能問題的根因。確定根因時,還需要結合執行計畫、表結構、資料分布、業務變更和叢集監控等資訊。

目前支援建立報告、查看報告列表、查看報告詳情和取消未完成報告。

前提條件

  • 已建立AnalyticDB for MySQL企業版、基礎版或湖倉版叢集。

  • 當前阿里雲帳號或 RAM 使用者具備訪問目的地組群和使用 SQL Pattern 對比功能的許可權。

  • 所選時間視窗記憶體在可用於分析的 SQL 訪問資料。沒有合格資料時,報告可以正常完成,但對應維度結果可能為空白。

使用限制

  • 目前僅在華南1(深圳)和新加坡地區開放。

  • 對比時間1和對比時間2必須屬於同一個叢集。

  • 每個視窗的開始時間必須早於結束時間,單個視窗最長為 24 小時。

  • 兩個視窗可以不連續,也可以長度不同。為了提高可比性,建議使用長度相同、業務周期相近的兩個視窗。

  • 同一叢集同一時間最多存在一份未完成的報告。已有報告處於等待中或產生中時,不能再次建立。

  • 報告建立後不能修改叢集、報告類型或時間視窗。如需調整條件,請重新建立報告。

  • 報告結果保留 7 天。報告到期後不再出現在可用報告列表中,也不能查看詳情。

  • 報告按阿里雲主帳號隔離。在具備叢集存取權限的前提下,同一主帳號下的 RAM 使用者共用該帳號建立的報告,不同主帳號之間不可見。

重要

SQL Pattern 中的字面量會被參數化為 ?,但資料庫名、表名和列名等標識符可能仍然保留。參數化不等同於完整匿名化,請按照組織的資料安全規範使用和分享報告。

核心概念

對比時間1和對比時間2

  • 對比時間1:基準視窗,用於表示變化前或參照時段。

  • 對比時間2:目標視窗,用於表示需要重點分析的時段。

建議將已確認存在流量、延遲或資源波動的時段放在時間2,並優先選擇以下視窗:

  • 今天與昨天的同一時段。

  • 今天與上周同一天的同一時段。

  • 發布前與發布後的等長時段。

  • 流量切換前與切換後的等長時段。

說明

如果兩個視窗長度不同,總量類指標會天然受到視窗時間長度影響。此時應同時查看活躍分鐘均值、單分鐘峰值和執行次數,避免只根據總量判斷變化程度。

報告類型

報告類型

含義

適用情境

新增

時間2出現、時間1未出現的 SQL Pattern。

排查發布、流量切換或業務變化後新增的 SQL。

變化

兩個視窗均出現,並且在當前分析維度下,時間2的活躍分鐘均值高於時間1的 SQL Pattern。

排查已有 SQL 的調用量或資源消耗增長。

重要
  • 新增不等同於異常。新增報告只說明 SQL Pattern 在兩個視窗之間的出現關係,仍需結合業務預期判斷是否需要處理。

  • 變化報告的候選集合與當前分析維度有關。同一 SQL Pattern 可能在執行次數維度出現,但在峰值記憶體維度不出現。

SQL Pattern

SQL Pattern 是參數化後的 SQL 模板。結構相同、僅參數值不同的 SQL 會歸入同一個 Pattern,便於按模板彙總執行次數和資源消耗。每個 Pattern 都有穩定的 Pattern Hash,可用於識別同一個 SQL 模板。

分析維度

一次報告固定計算以下五個維度。建立報告時無需選擇維度,查看詳情時再切換當前維度。

分析維度

說明

執行次數

SQL Pattern 的執行次數。

CPU Cost

SQL Pattern 的 Operator Cost,不等同於精確 CPU 時間。

Shuffle 資料量

SQL Pattern 產生的 Shuffle 資料量。

峰值記憶體

SQL Pattern 的峰值記憶體消耗。

資料讀取量

SQL Pattern 的掃描資料量。

變化程度

變化類型報告根據當前維度活躍分鐘均值變動率劃分變化程度:

時間2相對時間1的活躍分鐘均值變動率

變化程度

0% < 變動率 <= 20%

輕微

20% < 變動率 <= 50%

中度

50% < 變動率 <= 100%

高度

變動率 > 100%

極度

時間1為 0、時間2大於 0

極度(零基準增長)

使用說明

建立對比報告

  1. 登入AnalyticDB MySQL版控制台,選擇地區並進入目的地組群。在左側導覽列,選擇診斷優化> SQL診斷優化,然後單擊SQL Pattern 對比頁簽。

  2. 選擇報告類型:

    • 關注發布或流量切換後出現的新 SQL 時,選擇新增。

    • 關注已有 SQL 的調用量或資源消耗是否增長時,選擇變化。

  3. 設定對比時間1和對比時間2的開始時間與結束時間。

  4. 確認目的地組群、報告類型和時間視窗後,單擊開始對比。

提交前,建議確認:

  • 時間1是基準視窗,需要分析的目標時段位於時間2。

  • 每個視窗不超過 24 小時。

  • 兩個視窗盡量等長且業務周期相近。

建立成功後,系統會返回報告 ID,並在後台非同步產生結果。建立成功不表示報告已經完成,您可以稍後在報告列表中查看狀態。視窗越長、查詢量越大、Pattern 數量越多,產生時間通常越長,系統不承諾固定完成時間長度。

說明

如果系統提示當前叢集已有未完成報告,請等待現有報告完成,或確認不再需要後取消該報告。請勿連續重複提交建立請求。

查看報告和狀態

報告列表展示當前阿里雲主帳號可見且未到期的報告。

狀態

含義

可執行操作

等待中

報告已建立,正在等待背景工作開始。

等待或取消。

產生中

後台正在產生五個維度結果。

等待或取消。

已完成

報告結果已經產生。

查看詳情。

說明

產生失敗、已取消或已到期的報告不會繼續顯示在可用報告列表中。

取消報告

等待中或產生中的報告可以取消。取消前請確認目的地組群和報告 ID 正確,並確認報告已不再需要。

取消成功後,報告及已產生結果會失效,不再出現在報告列表中,且操作不可恢複。已完成的報告不能取消,會繼續保留至到期。

說明

如果取消請求因網路異常而結果未知,請先重新整理報告列表確認狀態,不要直接重複提交取消請求。

查看並解讀報告結果

報告完成後,進入詳情並選擇分析維度。結果數量表示當前維度和篩選條件下的 SQL Pattern 數量,不是五個維度合計數量。

新增報告詳情

新增報告展示時間2中新增 SQL Pattern 的總量、活躍分鐘均值、單分鐘峰值、佔比和排序等資訊,不展示時間1指標或變動率。

新增 SQL 不一定存在風險。建議先確認它是否符合發布、流量切換或業務變更預期,再根據累計影響和單分鐘峰值決定是否繼續分析。

變化報告詳情

變化報告同時展示時間1和時間2的指標,並提供活躍分鐘均值、總量和單分鐘峰值的變動率。

報告是否包含某個 Pattern,以及變化程度如何劃分,均以當前維度活躍分鐘均值增長為準。總量變動率和單分鐘峰值變動率用於輔助判斷,不影響變化程度劃分。

時間 1 指標值為 0、時間 2 大於 0 時,該 Pattern 屬於零基準增長,將歸入“極度變化”。如需排除此類 Pattern,請設定變動率上限。

活躍分鐘均值、總量和單分鐘峰值

  • 活躍分鐘均值按該 Pattern 實際出現過的分鐘桶計算,不是用整個視窗的總分鐘數直接做除法。

  • 總量反映視窗內的累計影響,比較不同長度視窗時需要謹慎。

  • 單分鐘峰值表示最大分鐘桶,用於識別低頻但某一分鐘內影響較高的 SQL Pattern,不代表單條 SQL 的最大值。

  • 低頻或周期性 SQL 應結合活躍分鐘均值、總量和單分鐘峰值和執行次數一起判斷。

分析建議

建議按照以下順序分析:

  1. 選擇與叢集異常現象最相關的分析維度。

  2. 優先查看累計影響較高的 Pattern,同時保留對低頻單分鐘峰值的關注。

  3. 對變化報告檢查活躍分鐘均值變動率,並識別零基準增長。

  4. 結合 Pattern 文本和 Pattern Hash 確認 SQL 類型與業務用途。

  5. 使用執行計畫、表結構、資料分布和業務變更記錄驗證根因。

說明

報告只覆蓋新增 Pattern 和當前維度增長的變化 Pattern。長期存在但兩個視窗間沒有增長的高消耗 SQL 可能不會出現在報告中,空結果也不能證明叢集中不存在其他效能問題。

OpenAPI介面

API Action

用途

CreateSqlPatternCompareReport

建立 SQL Pattern 對比報告。

DescribeSqlPatternCompareReports

查詢當前主帳號可見的報告列表。

DescribeSqlPatternCompareReport

查詢報告詳情。

CancelSqlPatternCompareReport

取消可取消的報告。

調用時請注意:

  • 時間欄位使用 UTC 分鐘級格式 yyyy-MM-ddTHH:mmZ,例如 2026-08-18T08:00Z。

  • 報告類型使用 NEW 或 CHANGED。

  • 詳情分析維度使用 QUERY_COUNT、CPU_COST、SHUFFLE_SIZE、PEAK_MEMORY 或 SCAN_SIZE。

  • 詳情請求可通過 IncludePattern 控制是否返回參數化後的 SQL Pattern 文本;設定為 false 時仍返回 Pattern Hash 和指標。

  • 目前的版本不支援 Lang 參數。

完整請求參數、分頁方式、返回參數和錯誤碼,請參見對應 OpenAPI 參考文檔。

常見問題

建立時提示當前叢集已有未完成報告怎麼辦?

同一叢集同一時間最多有一份未完成報告。請在報告列表中尋找等待中或產生中的報告,等待其完成,或確認不再需要後取消。

建立成功後為什麼不能立即查看詳情?

報告在後台非同步產生。請等待列表狀態變為已完成後再查看詳情。

報告產生時間為什麼比較長?

報告需要讀取兩個視窗的 SQL 訪問資料,並完成五個維度彙總。視窗越長、查詢量和 Pattern 數量越多,產生時間通常越長。

為什麼不同分析維度結果數量不一致?

變化報告會針對當前維度篩選時間2活躍分鐘均值高於時間1的 Pattern。不同維度增長集合不同,因此結果數量和明細內容可能不同。

為什麼報告詳情為空白?

可能是當前報告類型下沒有符合定義的 Pattern、當前維度沒有增長的 Pattern,或所選視窗內沒有可用 SQL 訪問資料。空詳情不等同於建立失敗,請先確認報告狀態、類型、分析維度和篩選條件。

為什麼報告從列表中消失?

報告可能已經取消、產生失敗或超過 7 天有效期間。此類報告不會繼續顯示在可用報告列表中。

為什麼看不到其他帳號建立的報告?

報告按阿里雲主帳號隔離。當前主帳號只能查看本帳號範圍內建立的報告,不同主帳號之間不可見。

報告能否直接證明某條 SQL 是效能問題根因?

不能。報告用於發現新增或增長的 SQL Pattern 候選。根因仍需結合執行計畫、表結構、資料分布、叢集監控和業務變更記錄確認。

問題反饋

需要支援人員協助時,請提供地區、叢集 ID、報告 ID、報告類型、兩個對比時間視窗、當前分析維度、操作時間、請求 ID、錯誤碼、錯誤資訊和問題截圖。這些資訊有助於縮短問題定位時間。