GaussDB-SQL限流能力
GaussDB-SQL限流能力
可获得性
本特性自505.0.0版本开始引入。
特性简介
在数据库系统中,时常会出现某类SQL执行异常,占用较多系统资源,或者出现某类SQL因异常或业务需求并发激增,影响其他业务执行,甚至整个数据库系统无法响应其他业务请求的情况。为了解决该问题,GaussDB实现了SQL限流的能力,可以从多维度限制某类SQL执行的并发数。
客户价值
当数据库由于某类SQL并发数突增或者长时间执行,导致其他的业务请求无法执行,最终导致数据库无法对外提供服务时,通过本特性能够限制异常SQL的并发数,让正常的业务得到保障,提升系统韧性。
特性描述
本特性可以实现多种规则的SQL限流能力,限制某类SQL或实例的最大并发数,包括:
- 根据Unique SQL ID进行限流:在明确某条SQL为慢SQL或者占用资源较高的SQL时,可以通过Unique SQL ID对该SQL进行限流,避免业务大量执行此SQL而影响其他业务;
- 根据SQL类型及关键字进行限流:在明确某类SQL请求可能会随业务量增长而增长的时候,使用SQL类型和关键字对此类SQL进行限流;
- 由于某些业务高峰是可以预知的,在仅希望在业务高峰时段对SQL请求进行限制的情况下,可以设置SQL限流的生效时间,避免限流规则常驻系统;
- 当只希望限流规则作用于业务库,而对系统库的SQL不做控制,可以按不同库的维度进行限流;
- 除了对某类SQL进行限流,本特性还提供实例级别的限流能力;
- 对于限流规则,提供查询统计的能力,可以查询所有的限流规则,并根据规则列表对限流规则进行管理。此外,还提供查询限流规则限制访问的SQL次数。
特性增强
无
特性约束
- 只支持在CN上限流。
- 对于Unique SQL ID限流,需要设置GUC参数enable_resource_track = on,instr_unique_sql_count > 0。
- 对于关键字限流,按照并发度排序,并发度越低优先级越高。关键字不区分大小写,支持模糊匹配。
- 数据库名称区分大小写。删除某个数据库,再创建同名的数据库,会导致所有已录入的针对这个数据库的限流规则失效。
- 基于资源的实例级最大活跃并发数限流,按照并发度排序,并发度越低优先级越高。当前无论用户设置的和实际的cpu使用率和内存使用率是多少,超过设置的限制并发数都会限流。
- 对于限流周期结束的规则,会在下次限流规则触发时将is_valid标记为false,后续不再检查。
- 对于SQL限流次数的统计没有落盘,是数据库从启动到当前的累计次数。
- 游标、存储过程中的SQL语句不会被限流。
- 管理员用户执行的SQL语句不会被限流。
- 限流规则数据库间不共享,创建限流规则时需要连接目标库。如果创建限流规则的CN被剔除并触发全量Build,则会继承全量Build目标CN中的限流规则,因此建议在各个CN上尽量都创建对应的限流规则。
- CN之间由于Unique SQL ID不同,不共享限流规则,需要用户手动在不同的CN上创建对应的限流规则。
依赖关系
无

浙公网安备 33010602011771号