慢SQL影响系统稳定性。针对慢SQL,MSE数据库治理提供了SQL级别的洞察与防护,您可以根据SQL洞察能力为慢SQL配置流控降级规则保障系统的稳定性。本文介绍针对慢SQL如何设置SQL流量控制与保护。

背景信息

系统中出现慢SQL可能会导致CPU、负载异常和系统资源耗尽等情况。严重的慢SQL发生后可能会拖垮整个数据库,对线上业务产生阻断性的风险。线上生产环境出现慢SQL可能原因如下:
  • 网络速度慢、内存不足、I/O吞吐量小和磁盘空间被占满等硬件原因。
  • 没有索引或者索引失效。
  • 系统数据过多。
  • 在项目初期没有对SQL的性能做好考量。

使用限制

JDBC驱动支持的版本如下:
组件支持驱动版本
MySQL JDBC5.x/8.x
Oracle JDBC12.x

操作步骤

  1. 登录MSE治理中心控制台,并在顶部菜单栏选择地域。
  2. 在左侧导航栏,选择治理中心 > 应用治理
  3. 应用列表页面单击目标应用的资源卡片,然后在左侧导航栏单击数据库治理,单击页面的SQL详情页签可查看应用的QPS、RT和并发数据等情况。
  4. 接口概览页签单击目标接口资源卡片右上角的+管理规则图标,然后根据MSE自动识别的SQL语句,对出现慢SQL或高并发的SQL在管理规则对话框中配置流控、隔离以及热点限流等三种SQL防护规则。
    • 流控规则:为服务接口配置流控规则,让容量范围内的请求通过,多余的请求被拒绝,可以有效保证SQL请求访问的流量控制在系统容量的阈值内。详情请参见配置流控规则
      1. 管理规则页面的默认方案页签下,单击流控规则面板,然后单击新增流控规则
      2. 选择防护场景页面,确认接口名称,单击下一步
      3. 配置防护规则页面配置相关参数,然后单击下一步,最后单击新增流控规则
    • 隔离规则:当流量近似稳态时,并发线程数=QPS * RT(s),当RT升高,并发线程数升高,代表服务调用出现堆积。采用流量治理提供的服务并发隔离能力,给重要服务调用配置并发线程数限制,防止慢SQL或者不稳定的服务过多挤占正常服务资源。详情请参见配置隔离规则
      1. 管理规则页面的默认方案页签下,单击隔离规则面板,然后单击新增隔离规则
      2. 选择防护场景页面,确认接口名称,单击下一步
      3. 配置防护规则页面配置相关参数,然后单击下一步,最后单击新增隔离规则
    • 热点规则:为应用配置热点规则后,MSE将自动分析统计SQL中的热点参数,即SQL调用过程中的调用频次较高的参数值,并根据配置的热点规则对包含热点参数的SQL访问进行限流,保护系统稳定性。详情请参见配置热点规则
      1. 管理规则页面的默认方案页签下,单击热点规则面板,然后单击新增热点限流规则
      2. 选择防护场景页面,确认接口名称,单击下一步
      3. 配置防护规则页面配置相关参数,然后单击下一步,最后单击新增热点规则
        重要 MSE会自动感知SQL语句中的参数并自动排列参数索引位置。在SQL热点限流规则中,参数位置索引与SQL语句中的索引值相对应。