
# SQL限流
针对新上业务不能及时发包优化的SQL和突发流量导致CPU等资源100%瓶颈的场景，SQL限流功能通过控制既定SQL规则的并发度协助业务侧及时流控，保证核心业务的稳定运行。
#### 使用须知
- MariaDB SQL限流支持的实例版本需要大于等于10.5.16.230600。
- 新增的SQL限流规则仅对当前实例生效。
- 当SQL语句匹配多条限流规则时，优先生效最新添加的规则，之前的规则不再生效。
- 在添加SQL限流规则之前，已经开始执行的SQL语句，不会被计入并发数。
- 限流规则的关键字有顺序要求，只会按顺序匹配。例如：a\~and\~b只会匹配xxx a\>1 and b\>2，而不会匹配xxx b\>2 and a\>1。
- 如果复制时延过长，只读实例新增或删除限流规则时，不会立刻生效。
- 单个关键字首尾的空白字符会被忽略，包括' '、'\\n'、'\\r'、'\\t'等。
- 以下场景不受SQL限流的限制：
  - 系统表不限制。
  
  - 不涉及数据查询的不限制。例如：SELECT sleep(*xxx*);
  
  - root账户不限制。
  
  - 对存储过程，触发器，函数内的SQL语句不限制。
   
 
#### 操作步骤
1. [登录DAS管理控制台](https://console.huaweicloud.com/das/#/das/overview)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-das/zh-cn_image_0000001694653209.png)，选择区域和项目。
3. 在左侧的导航栏中单击"DBA智能运维 \> 实例列表"页签，进入DBA智能运维实例列表页面。 
   您也可以在产品概览页面，单击"进入DBA智能运维"，进入DBA智能运维实例列表页面。
   
   
4. 在实例列表页面右上角，按照引擎、实例名称或者实例IP筛选实例。
5. 选择目标实例，单击"详情"，进入"实例概览"页面。
6. 在"SQL"页签下选择"SQL限流"。
7. 在"SQL限流"页面，开启SQL限流开关。 
   图1开启SQL限流   
   ![](https://support.huaweicloud.com/usermanual-das/zh-cn_image_0000001706677805.png)
   
   
8. 单击"新建SQL限流规则"，选择需要限流的SQL类型，设置关键字以及最大并发数。 
   图2设置页面   
   ![](https://support.huaweicloud.com/usermanual-das/zh-cn_image_0000001658279842.png)
   表1SQL限流规则参数说明 
   | **参数项**       | **说明**                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | SQL类型         | 支持选择三种类型：SELECT、UPDATE、DELETE。                                                                                                                                                                                                                                                                                                                                                                       |
   | 关键字           | 最多支持128个关键字，不区分大小写。支持以下两种方式输入关键字。 - **直接输入关键字**：例如关键字是"select\~a"，含义为：select以及a为该并发控制所包含的两个关键字，\~为关键字间隔符，也就是说如果执行SQL语句中包含select与a两个关键字，那么命中此条并发控制规则。  - **原始SQL** **生成关键字**：输入原始SQL再单击"生成关键字"，生成的关键字仅供参考，请谨慎使用。   |
   | 最大并发数         | 输入最大并发数，与关键字匹配的SQL语句如果超过最大并发数会被拒绝执行。                                                                                                                                                                                                                                                                                                                                                                 |
   | kill满足规则的已有会话 | 勾选此选项后，不会结束root用户下的连接会话。                                                                                                                                                                                                                                                                                                                                                                             |
      
   
   
9. 确认无误后，单击"确定"。 
   若不再需要此条SQL限流规则，可以在SQL限流列表页单击"删除"，删除SQL限流规则。
   
   
 
