GaussDB-SQL限流

118 阅读5分钟

GaussDB-SQL限流

操作场景

提供SQL限流功能,当存在异常SQL(如不优索引)、SQL并发量上升时,通过SQL限流功能控制异常SQL的访问量或者并发量,保障服务的可用性。

前提条件

登录账号需要具备授权项“gaussdb:instance:listFlowlimit”、“gaussdb:instance:flowlimitAddOrUpdate”和“gaussdb:instance:flowlimitDelete”。

约束限制
  • 分布式实例不支持自治限流以及SQLID类型的限流任务。

  • 不支持对系统级别用户(例如root等)的进行SQL限流。

  • 当前不支持批量删除SQL限流任务。

  • 每个实例最多支持1000条限流任务。

  • 对于关键词限流任务,一个关键词中包含英文逗号“,”视作以逗号分割的两个关键词,作用时不区分关键词前后顺序。

  • 用户通过系统级别用户(例如root等)进行后台SQL限流的增删改,会导致实际限流任务情况与前端不一致。

  • 限流规则匹配会消耗CPU性能,建议同一个实例里不要创建大量限流规则。

  • 容灾场景下,主实例上的限流规则会自动同步到备实例,容灾升主后暂时不支持限流规则的增删改查,切回原实例后可继续管理限流任务。

  • 备份恢复到新实例、容灾场景切回原实例,如果出现无法修改和删除的情况,请参考故障处理。

  • 驱动建立数据库连接涉及的SQL语句(如:select setting from pg_settings where name='delimiter_name')被限流会导致无法新建连接,不允许该类SQL的限流操作。

  • 当多个限流任务规则同时生效于同一条SQL语句,存在生效优先级:

    1. 并发数/最大活跃会话数数量越小优先级越高。
    2. 并发数/最大活跃会话数相同时,优先级:自治限流任务>SQLID类型>关键词类型。
    3. 并发数/最大活跃会话数相同且限流类型一致时,后创建的限流任务优先拦截。
  • 避免创建同名表。假如不同Database或不同SCHEMA下存在同名表,那么创建该表相关的SQLID限流任务时,限流规则可能不生效。因为平台无法确认是哪个Database或SCHEMA下的限流规则。

操作步骤
  1. 登录云数据库GaussDB管理平台(TPOPS)

  2. 单击具体实例名称,进入“实例管理”详情页。

  3. 选择“诊断优化 > SQL诊断 > SQL限流”,显示“SQL限流任务”页面。

  4. 单击“创建任务”,创建完成后可在页面查看SQL限流任务详情。

    限流任务类型参数名参数说明
    SQLID说明:仅主备版版实例支持该选项。限流任务名称自定义SQL限流任务名称。
    CN节点仅分布式示例存在该参数。选择已执行过SQL限流语句的CN节点。
    SQL模板系统会记录各个节点的SQL语句执行记录,并转化成一个模板,用户可以选择该模板下发到已执行过该语句的CN节点上进行SQL限流。(当某个实例重启时,该实例节点的SQL模板会清空。)
    并发数同一时间该节点执行被限制SQL的最大活跃连接数。
    生效时间选择限流生效时间。
    关键词说明:- 当前关键词限流类型里,只支持select,insert,update,delete,merge五种类型的语句。
    • 关键词数量范围为[2,100]个,每个关键词长度范围[2,64]位。
    • 关键词不区分大小写。 | 限流任务名称 | 自定义SQL限流任务名称。 | | SQL类型 | SQL类型,只支持SELECT,INSERT,UPDATE,DELETE,MERGE五种类型。 | | | 关键词 | 限流任务匹配的关键词,限流任务根据该关键词加上SQL类型进行语句匹配,所有的关键字都能匹配到才会生效。 | | | 作用库 | 限流作用的数据库。 | | | 并发数 | 同一时间该节点执行被限制SQL的最大活跃连接数。 | | | 生效时间 | 选择限流生效时间。 | |
  5. 创建完成后,单击“详情”,查看任务限流状态。

    当实例或节点重启后,限流任务拦截次数会清空。

  6. 选择一个限流任务,单击“修改”,可以修改限流任务。

  7. 选择一个限流任务,单击“删除”,可以删除限流任务。

  8. 若为主备版实例,单击“自治限流任务 > 创建任务”,创建自治限流任务。

    参数名参数说明
    限流场景选择触发限流的条件场景,目前只支持阈值条件触发。
    限流任务名称限流任务名称。
    CPU利用率该节点触发限流的CPU利用率阈值,当同时超过内存利用率设定阈值条件时限流生效。
    内存利用率该节点触发限流的内存利用率阈值,当同时超过CPU利用率设定阈值条件时限流生效。
    最大活跃会话数同一时间该节点执行任意操作命令的最大活跃连接数。
  9. 单击“数据同步”,单击“确认”,进行备份恢复原实例操作后的数据同步。

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…