全部產品
Search
文件中心

Database Autonomy Service:查詢治理

更新時間:Jul 27, 2024

資料庫自治服務DAS(Database Autonomy Service)通過離線資料分析技術,在每天淩晨1點將全部執行個體在昨天產生的慢SQL進行統計分析和自動打標,協助您對慢SQL進行自動分類和劃分治理優先順序,同時提供治理建議和資料匯出功能。

前提條件

  • 目標資料庫執行個體為:

    • RDS MySQL

    • PolarDB MySQL版

    • MyBase MySQL

    • RDS PostgreSQL

  • 當前支援中國內地、中國香港和新加坡地區的資料庫執行個體。

    說明

    從2023年04月01日起,查詢治理功能支援中國香港和新加坡地區的資料庫執行個體。

視頻教程

限制約束

  • 由於是T+1離線分析,如您當天對SQL打標了無需最佳化,第二天才能看到推薦最佳化SQL數值的變化。

  • DAS預定義的SQL標籤暫不支援關閉。

  • 每個資料庫執行個體只統計分析執行次數前200的慢SQL,即每個資料庫執行個體的慢SQL模板數最大為200。

名詞解釋

名詞

解釋

推薦最佳化SQL

從總體的慢SQL中,排除無需最佳化SQL,剩下的就是推薦最佳化SQL

無需最佳化SQL

包含DAS自動標籤為DAS忽略的SQL,以及使用者人工標記為無需最佳化的SQL。

DAS忽略

DAS自動打標無需最佳化,例如以showcreatexacommitrollbackselect sleepexplain開頭的SQL。

操作步驟

  1. 登入DAS控制台
  2. 在左側導覽列中,單擊查詢治理

  3. 查詢治理頁,查看查詢治理結果。

    您可以通過設定時間、地區、資料庫引擎,輸入目標執行個體ID,查看指定執行個體的查詢治理結果。

    • 查詢治理結果概覽:查看系統打標分類後的結果資料。

      說明

      只統計開啟DAS企業版執行個體的執行失敗SQL次數

    • 查詢治理趨勢:查看所選時間範圍內查詢治理結果的變化趨勢。

    • TOP數據:查看執行個體紅榜執行個體黑榜

      • 執行個體黑榜:慢SQL執行次數從高到低排序,協助您快速定位問題最嚴重的執行個體。

      • 執行個體紅榜:慢SQL執行次數變化量從低到高排序,負數表示慢SQL執行次數減少量(最佳化效果好),正數表示慢SQL執行次數增加量,協助您快速定位治理效果最好的執行個體。

      DAS推薦您重點關注推薦最佳化SQL的紅黑榜。

    • 待最佳化SQL:您可以設定篩選條件,過濾出需要治理的SQL語句。

      說明

      支援通過DB名稱、SQL關鍵字、規則標籤和資料庫使用者名稱進行篩選,四者之間是邏輯與的關係。

      • 多個DB名稱之間使用英文逗號(,)分隔,邏輯關係為或。

      • 多個SQL關鍵字之間使用空格分隔,邏輯關係為與。

      • 多個資料庫使用者名稱之間使用英文逗號(,)分隔,邏輯關係為或。

      • 規則標籤支援多選,多個規則之間邏輯關係為或。

      • 單擊目標SQL樣本操作列的建議,查看詳細的治理建議。

      • 單擊目標SQL樣本操作列的打標,對此SQL進行手動打標。標籤的具體含義請參見手動打標標籤

        您也可以勾選需要手動打標的SQL,進行批量打標。

      • 單擊目標SQL樣本操作列的樣本,查看此SQL的慢日誌樣本詳情。

      • 單擊目標SQL樣本操作列的趨勢,查看此SQL的慢日誌分析詳情。詳細的慢日誌分析介紹及操作請參見慢日誌分析

      您可以根據需要匯出和分享待最佳化的SQL資料,具體操作請參見最佳實務

    • 失敗SQL:您可以設定篩選條件,過濾出需要查看的SQL語句。

      說明
      • 只統計開啟DAS企業版執行個體的失敗SQL

      • 支援通過DB名稱和SQL關鍵字進行篩選,兩者是邏輯與的關係。

        • 多個DB名稱之間使用英文逗號(,)分隔,邏輯關係為或。

        • 多個SQL關鍵字之間使用空格分隔,邏輯關係為與。

      單擊目標SQL樣本操作列的樣本,查看此SQL的樣本詳情。

最佳實務

  • 使用標籤區分是否需要最佳化SQL:

    治理核心邏輯是將總體慢SQL分為無需最佳化的慢SQL和推薦最佳化SQL兩類,您可根據如下SQL標籤,快速篩選並按優先順序治理。

    ID

    標籤名稱

    層級

    推薦重點關注

    描述

    NEW_SQL

    新增慢SQL

    警告

    ✔️

    相比最近一周新增的慢SQL。

    DAS_IGNORE

    DAS忽略

    提示

    DAS自動打標無需最佳化,例如以showcreatexacommitrollbackselect sleepexplain開頭的SQL。

    FUZZY_LIKE

    LIKE模糊查詢

    提示

    like模糊比對,無法利用索引。

    HAS_EXPR

    包含運算式

    提示

    包含運算式計算,參與計算的列無法使用索引。

    LARGE_IN_LIST

    大列表查詢

    提示

    in包含超過200個元素,很可能是程式產生,欄位無法使用索引。

    SELECT_STAR

    SELECT全列查詢

    提示

    select指定業務需要的欄位,避免返回多餘欄位造成效能下降和資源浪費。

    INDEX_ADVISOR

    索引建議

    提示

    ✔️

    建立索引建議,加速SQL執行 。

    COMPLEX_JOIN

    複雜JOIN

    提示

    超過三個表禁止join。需要join的欄位,資料類型必須絕對一致;多表關聯查詢時,保證被關聯的欄位需要有索引。

    CROSS_DB

    跨庫查詢

    提示

    跨執行個體遷移庫表的時候,會產生跨庫查詢停用風險。

    SUBQUERY

    包含子查詢

    提示

    包含子查詢,可以考慮採用join改寫效率更高。

    DEEP_PAGING

    深度翻頁

    警告

    使用limit的深度翻頁,建議採用join改寫。

    WITHOUT_PREDICATE

    無謂詞

    警告

    ✔️

    包含無謂詞的語句,請檢查是否涉及全表掃描。

    NULL_COMPARE

    NULL匹配錯誤

    警告

    使用ISNULL()來判斷是否為NULL值,因為NULL與任何值的直接比較都為NULL

    COUNT_NOT_STAR

    COUNT不規範

    警告

    請使用COUNT(*)替代count(列名)或count(常量),count(*)是SQL92定義的標準統計行數的文法,跟資料庫無關,跟NULL和非NULL無關。count(列名)不會統計此列為NULL值的行。

    LARGE_ROWS_EXAMINED

    掃描行多

    提示

    平均掃描行超過50000,掃描行數越大,越消耗資料庫資源,不僅本身的SQL慢,還可能影響其他SQL執行。

    說明

    請考慮增加更好的SQL過濾條件。

    LARGE_ROWS_SENT

    返回行多

    提示

    平均返回行超過5000,一次返回太多資料,請考慮減少返回行數。

    NO_ADVICE

    無建議

    提示

    暫無分析建議。

    PERIOD_SQL

    周期性

    提示

    每天固定時間執行。

    DAS推薦您重點關注推薦最佳化SQL,您可配合下表,打標無需最佳化的SQL,持續降低推薦最佳化SQL數量,如下SQL標籤支援使用者手動打標。

    ID

    標籤名稱

    層級

    描述

    USER_IGNORE

    無需最佳化

    提示

    打標無需最佳化,第二天就不會被統計到推薦最佳化SQL中。

    DAS_IMPORTANT

    重要SQL

    提示

    打標重要SQL。

    DAS_NOT_IMPORTANT

    不重要SQL

    提示

    打標不重要SQL。

    DAS_IN_PLAN

    排期最佳化

    提示

    打標排期最佳化。

  • 資料匯出:

    • 您可通過建立匯出任務,將當前看到的SQL明細的全部資料匯出下載。

      說明

      匯出任務的資料可儲存3天,您可用於隨時下載。

    • 您可以通過設定不同的篩選條件(不同的執行個體、不同的規則等),建立不同的下載任務,安排不同的負責人分別最佳化。

    • 您也可以選中多個SQL記錄,匯出任務將只匯出被選中的SQL。

  • 資料分享:

    為方便您快速把經過條件式篩選後的慢SQL分享給對應的負責人,DAS提供兩種分享功能:

    • 您可以選中多個SQL記錄,點擊批量分享按鈕,系統產生短連結,有DAS控制台許可權的使用者點擊訪問後,將只會看到您選中的SQL記錄。

    • 您也可以單擊匯出旁邊的分享按鈕,系統產生短連結,有DAS控制台許可權的使用者單擊訪問後,將會看到您當前看到的全部詳細資料(無需您再次設定篩選條件)。

相關API

API

描述

CreateQueryOptimizeTag

對目標SQL進行打標。

GetQueryOptimizeExecErrorStats

擷取執行失敗的模板資料。

GetQueryOptimizeExecErrorSample

擷取執行失敗的樣本資料。

GetQueryOptimizeSolution

擷取查詢治理的治理建議。

GetQueryOptimizeRuleList

擷取查詢治理的規則列表。

GetQueryOptimizeDataTrend

擷取查詢治理趨勢資料。

GetQueryOptimizeDataTop

擷取查詢治理執行個體紅榜和執行個體黑榜的資料。

GetQueryOptimizeDataStats

擷取查詢治理模板資料。

GetQueryOptimizeTag

擷取指定SQL的標籤。

GetQueryOptimizeShareUrl

擷取查詢治理的分享連結。