GaussDB数据库中SQL诊断解析之配置SQL限流

配置SQL限流

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

前提条件

登录账号需要具备授权项"gaussdb:instance:listFlowlimit"、"gaussdb:instance:flowlimitAddOrUpdate"、"gaussdb:instance:createFlowLimit"、"gaussdb:instance:updateFlowLimit"、"gaussdb:instance:deleteFlowLimit"、"gaussdb:instance:getFlowLimitInfo"、"gaussdb:instance:getFlowLimitTemplate"、"gaussdb:instance:listFlowLimitInfo"、"gaussdb:instance:syncFlowLimit"和"gaussdb:instance:flowlimitDelete"。

约束限制

GaussDB实例的数据库引擎版本需要大于等于V2.0-8.0.1,内核版本大于等于505.0.0。

分布式不支持自治限流任务。

  • 分布式实例不支持SQLID类型的限流。
  • 不支持对系统级别用户(例如root等)进行SQL限流。
  • 当前不支持批量删除SQL限流任务。
  • 每个实例最多支持1000条限流任务。
  • 对于关键词限流任务,一个关键词中包含英文逗号视作以逗号分割的两个关键词,作用时不区分关键词前后顺序。
  • 用户通过系统级别用户(例如root等)进行后台SQL限流的增删改,会导致实际限流任务情况与前端不一致。
  • 限流规则匹配会消耗CPU性能,建议同一个实例里不要创建大量限流规则。
  • 新添加SQL限流规则之前已经开始执行的SQL语句不会被计入并发数。
  • 容灾场景下,主实例上的限流规则会自动同步到备实例,容灾升主后暂时不支持限流规则的增删改查,切回原实例后可继续管理限流任务。
  • 备份恢复到新实例、容灾场景切回原实例,如果出现数据丢失的情况,请参考故障处理。
  • 实例异常和规格变更期间允许创建、修改、查看限流规则,但可能会失败,如果出现失败或异常可
  • 以通过删除限流规则处理,删除前请确保数据库正常。
  • 驱动建立数据库连接涉及的SQL语句(如:select setting from pg_settings where name='delimiter_name')被限流会导致无法新建连接,不允许该类SQL的限流操作。
  • 实例节点在创建、重启过程中(比如扩副本、扩分片),可能会因为节点无法连接导致SQL限流任务详情查询异常。
  • 灰度升级期间或容灾升主后双主场景下原备实例的限流创建、修改、删除限流规则会触发任务流校验,返回"当前实例正在有其他操作"的错误信息,而限流任务一直显示创建中、修改中或删除中,可
  • 以通过单击"数据同步"恢复数据的正常。
  • 内核如果抛出报错信息,如ERROR: The workload rule takes effect and this request will be cancelled. rule_id: x, rule_name: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",其中rule_name对应Console控制台"限流任务ID",对应审计日志task id。
  • 当多个限流任务规则同时生效于同一条SQL语句,存在生效优先级:
  • 并发数/最大活跃会话数的数量越小优先级越高。
  • 并发数/最大活跃会话数相同时,优先级:自治限流任务>SQLID类型>关键词类型。
  • 并发数/最大活跃会话数相同且限流类型一致时,后创建的限流任务优先拦截。
  • 避免创建同名表。如果不同Database或不同SCHEMA下存在同名表,创建该表相关的SQLID限流任务时,限流规则可能不生效。

创建限流任务

登录管理控制台。

单击管理控制台左上角的,选择区域和项目。

在页面左上角单击,选择"数据库 > 云数据库 GaussDB",进入云数据库 GaussDB信息页面。

在"实例管理"页面,选择指定的实例,单击实例的名称,进入实例详情页面。

选择"诊断优化 > SQL诊断 > SQL限流"。

选择"SQL限流任务"或"自治限流任务",单击"创建任务",填写限流信息,具体参数填写请参考表1。

创建SQL限流任务

图1 创建SQL限流任务



数据同步

登录管理控制台。

单击管理控制台左上角的,选择区域和项目。

在页面左上角单击,选择"数据库 > 云数据库 GaussDB",进入云数据库 GaussDB信息页面。

在"实例管理"页面,选择指定的实例,单击实例的名称,进入实例详情页面。

选择"诊断优化 > SQL诊断 > SQL限流"。

单击"数据同步"。

弹框中单击"确定"可以进行备份原实例后的数据同步。

图5 数据同步

相关推荐
EAI-Robotics5 分钟前
计算机视觉的数据收集与标注
人工智能·计算机视觉
IT_陈寒12 分钟前
SpringBoot性能调优实战:5个让接口响应速度提升300%的关键配置
前端·人工智能·后端
东临碣石8219 分钟前
【AI论文】OpenGPT-4o-Image:面向高级图像生成与编辑的综合性数据集
人工智能
一个天蝎座 白勺 程序猿24 分钟前
Python驱动Ksycopg2连接和使用Kingbase:国产数据库实战指南
数据库·python·kingbase·金仓数据库
无风听海42 分钟前
神经网络之激活函数Softmax
人工智能·深度学习·神经网络
无风听海42 分钟前
神经网络之理解温度对Softmax的影响
人工智能·深度学习
关关长语1 小时前
(三) Dotnet为AI控制台对话添加依赖注入等集成
人工智能·ai·ai dotnet
格林威1 小时前
不同光谱的工业相机有哪些?能做什么?
图像处理·人工智能·深度学习·数码相机·计算机视觉·视觉检测
CiLerLinux2 小时前
第三十八章 ESP32S3 SPIFFS 实验
图像处理·人工智能·单片机·嵌入式硬件
高铭杰2 小时前
Postgresql源码(149)SIMD应用与性能测试
数据库·postgresql·sse·simd