全部產品
Search
文件中心

ApsaraDB RDS:自動SQL限流

更新時間:Oct 25, 2024

當資料庫存在突發流量導致SQL並發量急劇上升、部分SQL佔用大量資料庫資源、或者大量未建立索引的SQL被調用等問題影響正常業務時,需要限制問題SQL的並發度,保障大部分的業務正常運轉。資料庫自治服務DAS支援自動SQL限流,會自動提取SQL特徵,通過關鍵詞對問題SQL進行限流。

前提條件

執行個體為如下版本:

  • RDS MySQL 8.0 高可用系列、三節點企業系列

  • RDS MySQL 5.7 高可用系列、三節點企業系列

  • RDS MySQL 5.6 高可用系列

適用情境

自動限流主要應用在以下3種情境:

  • 流量問題:出現緩衝穿透或異常調用情況,導致某類SQL並發量急劇上升。

  • 資料問題:存在大訂單資料的帳號,該帳號的相關SQL佔用大量資料庫資源。

  • SQL問題:未建立索引的SQL被大量調用,影響正常業務。

功能限制

自動SQL限流的限流模式是通過關鍵詞限流

  • 支援的SQL類型有SELECTUPDATEDELETEINSERT

  • 不支援限流INSERT...SELECT...類型的SQL語句。

  • RDS MySQL 8.0和PolarDB MySQL版 5.7、8.0支援限流INSERT類型的SQL語句。

功能說明

當自動限流規則建立後,應用端使用了同時包含所有關鍵詞的SQL語句時:

  • RDS MySQL 5.6、RDS MySQL 5.7執行個體會返回1317錯誤(query execution was interrupted)。

  • RDS MySQL 8.0執行個體會讓相關SQL會處於Concurrency control waiting狀態,直至等待數量超過ccl_max_waiting_count參數的值(如果執行個體版本支援該參數)時,會返回錯誤碼和錯誤描述(Concurrency control waiting count exceed max waiting count),錯誤碼為ERROR 7534 (HY000)

    其中,若ccl_max_waiting_count參數值為預設值0時,所有被限流的SQL均會處於Concurrency control waiting狀態,不返回錯誤。通過DAS限流時,若該參數值為0,DAS會將其值設定為DAS的預設值(當前預設值為10);若使用者將其設定為大於0的其他值,DAS不再設定該參數,直接使用使用者的設定。

操作步驟

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 進入自治功能管理頁面,可以通過以下兩種方式進入:

    • 在左側導覽列中,選擇自治服務(原CloudDBA) > 一鍵診斷 > 自治中心。在自治中心頁,單擊自治功能開關

    • 在左側導覽列中,選擇自治服務(原CloudDBA) > 性能趨勢。在性能趨勢頁,單擊自治功能開關

  3. 自治功能管理 > 自治功能設定頁簽中,開啟自治功能開關,並在最佳化和限流頁簽勾選自動限流,然後設定如下參數作為自動限流的觸發條件。

  4. 2

    參數

    描述

    CPU利用率大於

    CPU利用率閾值,大於等於70%。

    活躍會話數量大於

    活躍會話數閾值。

    • 與CPU利用率關係為時,大於等於16。

    • 與CPU利用率關係為時,大於等於2。

    可限流時間段

    可以進行自動SQL限流的時間段。

    最大限流時間

    進行SQL限流的最大時間長度。

    如果最大限流時間設定為0,當資料庫執行個體狀態滿足自動SQL限流觸發閾值時,會觸發限流,但是會立即失效。

    期間大於

    期間閾值,CPU利用率與活躍會話數滿足限流閾值的期間超過此參數值時,觸發自動SQL限流。

    說明

    例如在可限流時間段內,自訂觸發條件為當CPU使用率大於80%,同時活躍會話數大於64,且該現象期間超過2分鐘時觸發自動限流,同時自動開始跟蹤:

    • 如果發現故障未消除,則自動復原該限流操作。

    • 自動限流觸發後,限流操作持續的時間不會超過最大限流時間。

  5. 單擊確定

  6. (可選)配置警示模板進行警示訂閱,以便及時瞭解資料庫執行個體的自動SQL限流情況。

    系統會推薦警示模板並添加對應自治事件的警示規則,您可以依照系統提示進行配置。

    說明
    • 如果您已經為執行個體配置了警示模板,請依照系統提示,在警示模板添加對應自治事件的警示規則。

    • 如果您需要自行設定警示模板和警示規則,請參見配置警示模板配置警示規則

    1. 選擇需要警示通知的警示聯絡組

      • 單擊新增連絡人...,添加新的警示連絡人。

      • 單擊新增聯絡組,添加新的警示聯絡組。

      • 單擊目標連絡人後的修改移除,修改或刪除已有連絡人的資訊。

      詳細操作請參見管理警示連絡人

    2. 確認關聯資源

    3. 單擊提交配置,並在彈出的對話方塊中確認警示配置。

查看自動SQL限流歷史

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 在左側導覽列中,選擇自治服務(原CloudDBA) > 一鍵診斷

  3. 單擊會話管理頁簽。

  4. 執行個體會話頁面:

    SQL限流

    • 單擊SQL限流

      • 運行中頁簽,查看正在執行的限流規則。

      • 運行結束頁簽,選擇需要查看的時間段,查看限流記錄。

      SQL限流

    • 如果在配置自動SQL限流參數時,選中同時KILL執行中的異常SQL,則可以單擊結束會話記錄,查看結束會話的記錄。

相關文檔

  • 您可以最佳化SQL問題,以提高資料庫效能、最佳化查詢效率並減少資源消耗。

  • 當執行個體CPU利用率或者活躍會話數未達到閾值,無法觸發自動限流時,您可以手動設定規則進行限流,詳情請參見SQL限流

相關API

API

描述

UpdateAutoThrottleRulesAsync

採用非同步方式,大量設定指定資料庫執行個體的自動SQL限流配置參數。

GetAutoThrottleRules

擷取指定資料庫執行個體的自動SQL限流規則。

DisableAutoThrottleRules

批量關閉指定資料庫執行個體的自動SQL限流功能。