配置SQL限流(1) 本节介绍了配置SQL限流的相关内容。 操作场景 GaussDB提供SQL限流功能,当存在异常SQL(如存在不优索引)、SQL并发量上升时,通过SQL限流功能控制异常SQL的访问量或者并发量,保障服务的可用性。 前提条件 登录账号需要具备授权项“gaussdb:instance:listFlowlimit”、“gaussdb:instance:flowlimitAddOrUpdate”和“gaussdb:instance:flowlimitDelete”。 约束限制 GaussDB实例的数据库引擎版本需要大于等于V2.08.0.1,内核版本大于等于505.0.0。 分布式不支持自治限流任务。 不支持对系统级别用户(例如root等)进行SQL限流。 当前不支持批量删除SQL限流任务。 每个实例最多支持1000条限流任务。 对于关键词限流任务,一个关键词中包含英文逗号视作以逗号分隔的两个关键词,作用时不区分关键词前后顺序。 用户通过系统级别用户(例如root等)进行后台SQL限流的增删改,会导致实际限流任务情况与前端不一致。 限流规则匹配会消耗CPU性能,建议同一个实例里不要创建大量限流规则。 新添加SQL限流规则之前已经开始执行的SQL语句不会被计入并发数。 容灾场景下,主实例上的限流规则会自动同步到备实例,容灾升主后暂时不支持限流规则的增删改查,切回原实例后可继续管理限流任务。 备份恢复到新实例、容灾场景切回原实例,如果出现数据丢失的情况,请参考故障处理。 实例异常和规格变更期间允许创建、修改、查看限流规则,但可能会失败,如果出现失败或异常可以通过删除限流规则处理,删除前请确保数据库正常。 驱动建立数据库连接涉及的SQL语句(如:select setting from pgsettings where name'delimitername')被限流会导致无法新建连接,不允许该类SQL的限流操作。 实例节点在创建、重启过程中(比如扩副本、扩分片),可能会因为节点无法连接导致SQL限流任务详情查询异常。 内核如果抛出报错信息,如ERROR: The workload rule takes effect and this request will be cancelled. ruleid: x, rulename: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",其中rulename对应Console控制台“限流任务ID”,对应审计日志task id。 避免创建同名表。如果不同Database或不同SCHEMA下存在同名表,创建该表相关的SQLID限流任务时,限流规则可能不生效。 自治限流场景下,当CPU利用率、内存利用率、并发数(最大活跃会话数)三者均超过阈值,才会触发自治限流规则生效。
来自: