使用TaurusDB的SQL限流
操作场景
SQL限流是指通过设置语句类型、关键字等匹配SQL语句,当所匹配的SQL语句超过设置的最大并发数时,数据库实例会拒绝执行此SQL,从而解决SQL并发数过高导致的实例不稳定问题,并支持查看当前限流规则已拦截次数。
您也可以基于SQL的执行时间或执行次数,识别出性能消耗最高的SQL语句,并为这些高负载SQL创建相应的限流规则。
执行新增限流规则、删除限流规则、节点重启、SQL限流开关操作或者限流规则过期时,所有SELECT/UPDATE/DELETE/INSERT类型的限流规则将重新生成。重新生成的限流规则的当前并发数以及已拦截次数将清零重新计算。
版本约束
- 内核版本大于等于2.0.28.15且小于2.0.28.40时,支持SELECT、UPDATE、DELETE类型的限流规则。
- 内核版本大于等于2.0.29.1时,支持SELECT、UPDATE、DELETE类型的限流规则。
- 内核版本大于等于2.0.54.240600时,支持SELECT、UPDATE、DELETE、INSERT类型的限流规则。
内核版本的查询方法请参见如何查看云数据库 TaurusDB实例的版本号。
约束限制
场景 |
约束 |
---|---|
设置限流规则 |
|
匹配限流规则 |
|
推荐规则 |
|
不受SQL限流限制的场景 |
|
限流规则的影响 |
|
新增限流规则
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 在页面左上角单击
,选择 。
- 在“实例管理”页面,选择目标实例,单击实例名称,进入实例概览页面。
- 在左侧导航栏选择“智能DBA助手 > 历史诊断”。
- 选择“全量SQL > SQL限流”。
- 在“SQL限流”页面,开启SQL限流开关。
- 单击“新建SQL限流规则”,选择需要限流的SQL类型、关键字以及最大并发数。
图1 新建SQL限流规则
表2 SQL限流规则参数 参数项
说明
SQL类型
支持选择四种类型:SELECT、UPDATE、DELETE、INSERT。
关键字
最多支持128个关键字,不区分大小写。支持以下两种方式输入关键字。
- 直接输入关键字:例如关键字是“select~a”,含义为:select以及a为该并发控制所包含的两个关键字,~为关键字间隔符,也就是说如果执行SQL语句中包含select与a两个关键字,那么命中此条并发控制规则。
- 原始SQL生成关键字:输入原始SQL再单击“生成关键字”,生成的关键字仅供参考,请谨慎使用。
关键字根据顺序匹配SQL语句。例如:a~and~b只会匹配*** a>1 and b>2,而不会匹配*** b>2 and a>1。
单个关键字首尾的空白字符会被忽略,包括' '、'\n'、'\r'、'\t'等。
最大并发数
输入最大并发数,与关键字匹配的SQL语句如果超过最大并发数会被拒绝执行。取值范围为0~1000000000。
kill满足规则的已有会话
勾选此选项后,会结束所有受SQL限流规则控制的账户所产生的会话。
同步规则给其他节点
勾选此选项后,将新增的限流规则同步给同一实例的其他节点。
设置规则时效
SQL限流规则的生效时间。
- 确认无误后,单击“确定”。
- 提示确认框中单击“确定”。
推荐规则
删除限流规则
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 在页面左上角单击
,选择 。
- 在“实例管理”页面,选择目标实例,单击实例名称,进入实例概览页面。
- 在左侧导航栏选择“智能DBA助手 > 历史诊断”。
- 选择“全量SQL > SQL限流”。
- 选择目标SQL限流规则,单击操作列的“删除”。
您也可以选择一条或多条限流规则,单击上方的“批量删除”。
- 弹框中确认删除的限流规则信息,如果勾选“同步规则给其他节点”,表示同一实例的其他节点的限流规则也会被删除,确认无误后单击“确定”。
图2 删除限流规则