全部產品
Search
文件中心

PolarDB:慢SQL

更新時間:Sep 12, 2025

PolarDB MySQL版預設將執行時間超過1秒的SQL語句定義為慢SQL,並在控制台提供SQL分析功能。您可以查看慢日誌的趨勢和統計資訊。此外,系統還提供相關SQL的最佳化建議和診斷分析,便於您進行深入分析與最佳化。

前置檢查(可選)

為確保您能正常查看慢SQL日誌,請核實您的賬戶是否已授權AliyunHDMFullAccess許可權。若需進行更精細的許可權管理,您可以使用自訂策略來授權RAM使用者,以便對PolarDB進行靈活的管控設定。

注意事項

慢日誌的最大長度為16 KB,超過該長度的部分將被截斷。

查看慢SQL

  1. 登入PolarDB控制台,在左側導覽列單擊集群列表,選擇叢集所在地區,並單擊目的地組群ID進入叢集詳情頁。

  2. 在左側導覽列中,選擇诊断与优化 > 慢 SQL

  3. 慢 SQL頁面中分為以下三種功能:

    慢日誌分析

    慢日誌分析頁簽,選擇需要查看的時間段,查看該時間段內慢日誌趨勢事件分布慢日誌統計慢日誌明細

    說明

    選擇時間範圍時,查詢結束時間需晚於查詢開始時間,且查詢開始時間和查詢結束時間的間隔不能超過7天,您可以查詢最近一個月內的慢日誌資訊。

    • 您可以在慢日誌趨勢圖中選擇某個時間點,查看該時間點的慢日誌統計慢日誌明細

      說明

      如果慢日誌語句內容過長,沒有完整展示,您可以將滑鼠指標放置在對應的慢日誌語句上,系統將以彈框的形式展示完整的慢日誌語句。

    • 事件分布地區:

      可以查詢到指定時間範圍內的慢日誌事件,單擊後可查詢事件詳情。

    • 您可以在節點ID下拉框地區,查看每個節點的慢請求數量。

    • 單擊image,可以將慢日誌資訊儲存到本地查看。

    • 單擊image,可攜帶當前已選擇和輸入的參數,跳轉至OpenApi控制台,進行API調試。

    • 慢日誌統計地區:

      • 在列表上側,可選擇過濾條件,對資料進行篩選,不同的資料庫引擎可篩選條件不同。

      • 單擊目標SQL模板SQL ID列的資料ID,可查看包含使用者分布、用戶端分布和指標趨勢的相關性及明細列表。

      • 單擊目標SQL模板操作列的最佳化,在彈出的SQL診斷最佳化對話方塊中,查看SQL診斷結果。

        若您採納診斷建議,單擊頁面右上方的複製,並將最佳化後的SQL粘貼到資料庫用戶端或DMS上執行,若不採納診斷建議,可直接單擊取消結束診斷。

        說明

        DAS會根據SQL的複雜程度、對應表的資料量、資料庫負載等進行SQL診斷,診斷建議的返回時間可能會超過20秒。完成診斷後,SQL診斷引擎會給出診斷結果、最佳化建議和預期最佳化收益,您可以根據診斷結果確認是否採納建議。

      • 單擊目標SQL模板操作列的限流,在SQL限流頁面配置限流參數,對目標SQ進行限流。詳細操作請參見SQL限流

      • 對於PolarDB MySQL版資料庫執行個體,單擊目標SQL模板操作列的IMCI,查看列存索引(IMCI)的相關文檔。

        說明
        • PolarDB MySQL版資料庫執行個體未購買列存索引節點,且慢日誌的最大執行時間超過20秒,最大掃描行超過20萬行時,顯示IMCI按鈕。

        • 對於巨量資料量複雜查詢,推薦使用列存索引(IMCI)提升查詢效能。

    • 慢日誌明細地區,單擊目標SQL操作列的最佳化限流,也可對目標SQL進行SQL診斷最佳化SQL限流

    自動SQL最佳化建議

    自動SQL最佳化建議頁面,選擇需要查看的時間段。

    開啟自動SQL最佳化:自動識別問題SQL,產生索引最佳化建議,並在不引發鎖表的情況下自動建立索引。

    說明

    您可以根據業務查看詳情請參見自動SQL最佳化

    查詢治理

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

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

      說明

      只統計開啟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:您可以設定篩選條件,過濾出需要查看的SQL語句。

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

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

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

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

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

調整慢SQL閾值

您可以前往PolarDB控制台配置与管理 > 参数配置頁面中,通過設定long_query_time參數來調整慢SQL定義的閾值。

參數

說明

long_query_time

將所有執行時間超過參數值的查詢記錄到慢查詢日誌中。

取值範圍:0.03-31536000,預設值:1,單位秒。

常見問題

為什麼會出現慢日誌記錄的SQL執行完成時間與SQL語句的實際執行時間不同?

通常情況下是執行SQL語句修改了時區。慢日誌記錄的SQL執行時間的時區,存在會話層級、資料庫層級和系統層級。慢日誌時間設定邏輯為:當資料庫存在時區時,以資料庫的時區為準,否則以系統時區為準。當通過SQL語句修改了會話層級的時區時,可能導致慢日誌記錄的時區無法正常轉換。

如何發現慢SQL?

您可以通過如下兩種方式發現慢SQL:

  • 直接在控制台上查詢慢SQL,詳情請參見慢SQL

  • 串連資料庫叢集後執行show processlist,找出執行時間過長的SQL,關於如何串連資料庫叢集,請參見串連資料庫

最佳實務

PolarDB MySQL版CPU使用率高

相關API

API

說明

DescribeSlowLogs - 查詢PolarDB叢集的慢日誌統計資訊

查看PolarDB MySQL版叢集的慢日誌統計資訊。

DescribeSlowLogRecords - 查看慢日誌明細

查看PolarDB MySQL版叢集的慢日誌明細。

DescribeDBClusterAuditLogCollector - 查詢叢集SQL採集功能

查看PolarDB MySQL版叢集的SQL採集功能(例如審計日誌、SQL洞察等)是否開啟。

ModifyDBClusterAuditLogCollector - 開啟或關閉叢集的SQL採集功能

開啟或關閉PolarDB MySQL版叢集的SQL採集功能(例如審計日誌、SQL洞察等)。