慢SQL影响系统稳定性。针对慢SQL,MSE数据库治理提供了SQL级别的洞察与防护,您可以根据SQL洞察能力为慢SQL配置流控降级规则保障系统的稳定性。本文介绍针对慢SQL如何设置SQL流量控制与保护。
背景信息
系统中出现慢SQL可能会导致CPU、负载异常和系统资源耗尽等情况。严重的慢SQL发生后可能会拖垮整个数据库,对线上业务产生阻断性的风险。线上生产环境出现慢SQL可能原因如下:
- 网络速度慢、内存不足、I/O吞吐量小和磁盘空间被占满等硬件原因。
- 没有索引或者索引失效。
- 系统数据过多。
- 在项目初期没有对SQL的性能做好考量。
使用限制
JDBC驱动支持的版本如下:
组件 | 支持驱动版本 |
---|---|
MySQL JDBC | 5.x/8.x |
Oracle JDBC | 12.x |
操作步骤
- 登录MSE治理中心控制台,并在顶部菜单栏选择地域。
- 在左侧导航栏,选择 。
- 在应用列表页面单击目标应用的资源卡片,然后在左侧导航栏单击数据库治理,单击页面的SQL详情页签可查看应用的QPS、RT和并发数据等情况。
- 在接口概览页签单击目标接口资源卡片右上角的
或
图标,然后根据MSE自动识别的SQL语句,对出现慢SQL或高并发的SQL在管理规则对话框中配置流控、隔离以及热点限流等三种SQL防护规则。
- 流控规则:为服务接口配置流控规则,让容量范围内的请求通过,多余的请求被拒绝,可以有效保证SQL请求访问的流量控制在系统容量的阈值内。详情请参见配置流控规则。
- 在管理规则页面的默认方案页签下,单击流控规则面板,然后单击新增流控规则。
- 在选择防护场景页面,确认接口名称,单击下一步。
- 在配置防护规则页面配置相关参数,然后单击下一步,最后单击新增。
- 隔离规则:当流量近似稳态时,并发线程数=QPS * RT(s),当RT升高,并发线程数升高,代表服务调用出现堆积。采用流量治理提供的服务并发隔离能力,给重要服务调用配置并发线程数限制,防止慢SQL或者不稳定的服务过多挤占正常服务资源。详情请参见配置隔离规则。
- 在管理规则页面的默认方案页签下,单击隔离规则面板,然后单击新增隔离规则。
- 在选择防护场景页面,确认接口名称,单击下一步。
- 在配置防护规则页面配置相关参数,然后单击下一步,最后单击新增。
- 热点规则:为应用配置热点规则后,MSE将自动分析统计SQL中的热点参数,即SQL调用过程中的调用频次较高的参数值,并根据配置的热点规则对包含热点参数的SQL访问进行限流,保护系统稳定性。详情请参见配置热点规则。
- 在管理规则页面的默认方案页签下,单击热点规则面板,然后单击新增热点限流规则。
- 在选择防护场景页面,确认接口名称,单击下一步。
- 在配置防护规则页面配置相关参数,然后单击下一步,最后单击新增。重要 MSE会自动感知SQL语句中的参数并自动排列参数索引位置。在SQL热点限流规则中,参数位置索引与SQL语句中的索引值相对应。
- 流控规则:为服务接口配置流控规则,让容量范围内的请求通过,多余的请求被拒绝,可以有效保证SQL请求访问的流量控制在系统容量的阈值内。详情请参见配置流控规则。