全部產品
Search
文件中心

ApsaraDB RDS:RDS MySQL慢SQL問題

更新時間:Aug 08, 2026

在相同業務情境下,架構設計和庫表索引設計會影響查詢效能,良好的設計可以提高查詢效能,反之會出現很多慢SQL(執行時間很長的SQL語句)。本文介紹導致慢SQL的原因和解決方案。

執行個體瓶頸

  • 原因及現象

    執行個體到達瓶頸的原因一般有如下幾種:

    • 業務量持續增長而沒有擴容。

    • 硬體老化,效能有損耗。

    • 資料量一直增加,資料結構也有變化,導致原來不慢的SQL變成慢SQL。

    您可以在控制台的監控與報警頁面,單擊標準監控頁簽,在資源監控內查看執行個體的資源使用方式。如果資源使用率各項指標都接近100%,可能是執行個體到達了瓶頸。

  • 解決方案

    判斷執行個體是否到達瓶頸,較好的方法是先測試出執行個體的效能基準值,例如用SysBench進行基準測試,複雜情境下的QPS和TPS很少會超過基準值。

    確認執行個體到達瓶頸後,建議升級執行個體規格。具體操作,請參見變更配置。

SQL異常

  • 原因及現象

    SQL異常的原因很多,例如庫表結構設計不合理、索引缺失、掃描行數太多等。

    您可以在控制台的SQL洞察頁面,查看慢SQL的執行耗時、執行次數等資訊。

  • 解決方案

    根據實際業務情況最佳化SQL。具體操作,請參見SQL最佳化。

版本升級

  • 原因及現象

    執行個體升級版本可能會導致SQL執行計畫發生改變,執行計畫中連線類型從好到壞的順序是system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all。更多資訊,請參見MySQL官方文檔。

    range和index連線類型時,如果SQL請求變慢,業務又不斷重發請求,導致並行SQL查詢比較多,會導致應用線程釋放變慢,最終串連池耗盡,影響整個業務。

    您可以在控制台的監控與報警頁面,單擊標準監控頁簽,在資源監控內查看執行個體的串連數情況。

  • 解決方案

    根據執行計畫分析索引使用方式、掃描的行數等,預估查詢效率,重構SQL語句、調整索引,提升查詢效率。具體操作,請參見SQL最佳化。

參數設定不當

  • 原因及現象

    參數innodb_buffer_pool_instances、join_buffer_size等設定不當會導致效能變慢。

    您可以在控制台的參數設定頁面,單擊修改曆史頁簽,查看執行個體的參數修改情況。

  • 解決方案

    調整相關參數,使其適合業務情境。

緩衝失效

  • 原因及現象

    緩衝可以很好地承擔大量查詢,但是並不能保證快取命中率100%,如果緩衝失效,也會有大量的查詢路由到資料庫端,導致效能下降。

    您可以在控制台的監控與報警頁面,單擊標準監控頁簽,在引擎監控內查看執行個體的快取命中率、QPS、TPS等。

  • 解決方案

    可以使用Thread Pool、Fast Query Cache、自動SQL限流等功能提高效能。

大量操作

  • 原因及現象

    如果有大批量的資料匯入、刪除、查詢操作,會導致SQL執行變慢。

    可以從磁碟空間、SQL洞察或者慢查詢裡找到對應語句。例如查看Binlog大小,正常情況單個Binlog大小是500 MB,如果超過500 MB的,可以查看是否有異常。

    您也可以在控制台的監控與報警頁面,單擊標準監控頁簽,在資源監控和引擎監控內查看執行個體的磁碟空間、IOPS、事務等情況。

    在本例中,某個 mysql-bin 檔案的 File_size 達到 4297859854(約 4 GB),明顯超出正常範圍,屬於異常檔案。

  • 解決方案

    在業務低峰期執行大大量操作,或將大大量操作拆分後分批執行。

未關閉事務

  • 原因及現象

    如果某個任務突然變慢,查看CPU和IOPS的使用率並不高,而且活躍會話持續增多,通常是因為存在未關閉的事務。

  • 解決方案

    檢查導致事務衝突的鎖並中止對應的SQL語句。

定時任務

  • 原因及現象

    如果執行個體負載隨時間有規律性變化,可能是存在定時任務。

    說明

    您可以在監控與報警頁面的標準監控頁簽查看相關監控資訊。

  • 解決方案

    調整定時任務的執行時間,建議在業務低峰期執行。

網路因素排查

如果排查完資源指標和慢 SQL 分析後仍未發現問題,建議進一步檢查網路連接方式:

  1. 在執行個體詳情頁選擇資料庫連接,查看當前串連地址類型。

  2. 公網地址訪問的網路延遲通常高於內網地址。如果應用部署在與 RDS 執行個體同一 VPC 下的 ECS 上,建議使用內網地址串連,以降低網路延遲對 SQL 執行的影響。

若懷疑存在網路連通性方面的故障,可參考“解決無法串連執行個體問題”進一步排查網路連接問題。

總結

RDS上定位慢SQL的主要方法如下:

結合RDS提供的這些功能,可以有效協助您快速定位甚至自動解決慢SQL問題。