當資料庫存在突發流量導致SQL並發量急劇上升、部分SQL佔用大量資料庫資源、或者大量未建立索引的SQL被調用等問題影響正常業務時,需要限制問題SQL的並發度,保障大部分的業務正常運轉。資料庫自治服務DAS支援自動SQL限流,會自動提取SQL特徵,通過關鍵詞對問題SQL進行限流。
前提條件
目標資料庫執行個體為:
資料庫 | 地區 |
| 自動SQL限流功能依賴異常檢測,目標資料執行個體所屬的地區必須支援異常檢測。目前支援的地區有: 華東1(杭州)、華東2(上海)、華南1(深圳)、華南2(河源)、華南3(廣州)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華東5(南京)、華東6(福州)、西南1(成都)、鄭州、中國(香港)、日本(東京)、韓國(首爾)、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、菲律賓(馬尼拉)、泰國(曼穀)、阿聯酋(杜拜)、沙特(利雅得)、德國(法蘭克福)、美國(矽谷)、美國(維吉尼亞)和英國(倫敦) |
適用情境
自動限流主要應用在以下3種情境:
流量問題:出現緩衝穿透或異常調用情況,導致某類SQL並發量急劇上升。
資料問題:存在大訂單資料的帳號,該帳號的相關SQL佔用大量資料庫資源。
SQL問題:未建立索引的SQL被大量調用,影響正常業務。
功能限制
自動SQL限流的限流模式是通過關鍵詞限流:
支援的SQL類型有SELECT、UPDATE、DELETE和INSERT。
不支援限流INSERT...SELECT...類型的SQL語句。
僅RDS MySQL 8.0和PolarDB MySQL版 5.7、8.0支援限流INSERT類型的SQL語句。
功能說明
當自動限流規則建立後,應用端使用了同時包含所有關鍵詞的SQL語句:
RDS MySQL 5.6、RDS MySQL 5.7的執行個體和PolarDB MySQL版 5.6的叢集會返回1317錯誤(query execution was interrupted)。
RDS MySQL 8.0執行個體、PolarDB MySQL版 5.7和PolarDB MySQL版 8.0叢集會讓相關SQL會處於
Concurrency control waiting
狀態,直至等待數量超過ccl_max_waiting_count參數的值(如果執行個體版本支援該參數)時,會返回錯誤碼和錯誤描述(Concurrency control waiting count exceed max waiting count),錯誤碼分別是:RDS MySQL 8.0為
ERROR 7534 (HY000)
。PolarDB MySQL版 5.7為
ERROR 3277 (HY000)
。PolarDB MySQL版 8.0為
ERROR 7533 (HY000)
。
其中,若ccl_max_waiting_count參數值為預設值0時,所有被限流的SQL均會處於
Concurrency control waiting
狀態,不返回錯誤。通過DAS限流時,若該參數值為0,DAS會將其值設定為DAS的預設值(當前預設值為10);若使用者將其設定為大於0的其他值,DAS不再設定該參數,直接使用使用者的設定。
關於自動SQL限流的詳細技術解讀,請參見自動SQL限流。
操作步驟
登入DAS控制台。
在左側導覽列中,單擊執行個體監控。
找到目標執行個體,單擊執行個體ID,進入目標執行個體詳情頁。
在左側導覽列中,單擊自治中心。
在自治中心頁面,單擊右側自治功能開關。
在自治功能管理 > 自治功能設定頁簽中,開啟自治功能開關,並在最佳化和限流頁簽勾選自動限流,然後設定如下參數作為自動限流的觸發條件。
參數
描述
CPU利用率大於
CPU利用率閾值,大於等於70%。
活躍會話數量大於
活躍會話數閾值。
與CPU利用率關係為或時,大於等於16。
與CPU利用率關係為且時,大於等於2。
可限流時間段
可以進行自動SQL限流的時間段。
最大限流時間
進行SQL限流的最大時間長度。
如果最大限流時間設定為0,當資料庫執行個體狀態滿足自動SQL限流觸發閾值時,會觸發限流,但是會立即失效。
期間大於
期間閾值,CPU利用率與活躍會話數量滿足限流閾值的期間超過此參數值時,觸發自動SQL限流。
說明例如在可限流時間段內,自訂觸發條件為當CPU使用率大於80%,同時活躍會話數大於64,且該現象期間超過2分鐘時觸發自動限流,同時自動開始跟蹤:
如果發現故障未消除,則自動復原該限流操作。
自動限流觸發後,限流操作持續的時間不會超過最大限流時間。
單擊確定。
您可以在資料庫執行個體的執行個體會話中,查看已自動觸發的SQL限流,詳細操作請參見查看自動SQL限流歷史。
可選:單擊事件訂閱設定,設定自動SQL限流事件通知。
當發生自動SQL限流時,會產生警告層級的DAS事件,請開啟開啟訂閱服務開關,並配置事件通知參數,詳情請參見開啟事件訂閱功能。
配置警示模板進行警示訂閱,以便及時瞭解資料庫執行個體的自動SQL限流情況。
系統會推薦警示模板並添加對應自治事件的警示規則,您可以依照系統提示進行配置。
選擇需要警示通知的警示聯絡組。
單擊新增連絡人...,添加新的警示連絡人。
單擊新增聯絡組,添加新的警示聯絡組。
單擊目標連絡人後的修改或移除,修改或刪除已有連絡人的資訊。
詳細操作請參見管理警示連絡人。
單擊提交配置,並在彈出的對話方塊中確認警示配置。
查看自動SQL限流歷史
登入DAS控制台。
在左側導覽列中,單擊執行個體監控。
找到目標執行個體,單擊執行個體ID,進入目標執行個體詳情頁。
在左側導覽列,單擊執行個體會話。
在執行個體會話頁面:
單擊SQL限流:
在運行中頁簽,查看正在執行的限流規則。
在運行結束頁簽,選擇需要查看的時間段,查看限流記錄。
如果在配置自動SQL限流參數時,選中同時KILL執行中的異常SQL,則可以單擊結束會話記錄,查看結束會話的記錄。
相關文檔
相關API
API | 描述 |
採用非同步方式,大量設定指定資料庫執行個體的自動SQL限流配置參數。 | |
擷取指定資料庫執行個體的自動SQL限流規則。 | |
批量關閉指定資料庫執行個體的自動SQL限流功能。 |