數據庫自治服務DAS(Database Autonomy Service)通過離線數據分析技術,在每天凌晨1點將全部實例在昨天產生的慢SQL進行統計分析和自動打標,幫助您對慢SQL進行自動分類和劃分治理優先級,同時提供治理建議和數據導出功能。
前提條件
目標數據庫實例為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自動打標無需優化,例如以 |
操作步驟
登錄DAS控制臺。
在左側導航欄中,單擊實例監控。
找到目標實例,單擊實例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自動打標無需優化,例如以
show
,create
,xa
,commit
,rollback
,select sleep
,explain
開頭的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控制臺權限的用戶單擊訪問后,將會看到您當前看到的全部明細數據(無需您再次設置篩選條件)。