华为云云数据库rds排查RDS for MySQL CPU使用率高的原因和解决方法_云淘科技

使用云数据库 RDS for MySQL时,如果您的CPU使用率很高或接近100%,会导致数据读写处理缓慢、连接缓慢、删除出现报错等,从而影响业务正常运行。

2021.11.25 00:00开始,DAS的部分免费功能将进入存量运营状态,新客户不开放,存量客户可以继续使用,功能不再演进。 这部分功能包括开发工具模块中的SQL诊断、表结构对比与同步、数据追踪与回滚、测试数据生成、DBA智能运维服务功能以及DBA智能运维模块中的空间、参数智能推荐、历史事务、Binlog解析功能。

对于2021.11.25 00:00后创建的实例,推荐使用解决方法一。
对于2021.11.25 00:00前创建的实例,推荐使用解决方法二。

建议提前开启审计日志,便于在出现CPU使用率高的情况时,通过审计日志查看SQL执行记录协助定位问题原因。

解决方法一

分析慢SQL日志以及CPU使用率指标来定位效率低的查询,再优化查询效率低的语句。

查看慢SQL日志来确定是否存在运行缓慢的SQL查询以及各个查询的性能特征(如果有),从而定位查询运行缓慢的原因。

查询RDS for MySQL日志,请参见查询慢SQL。

查看实例的CPU使用率指标,协助定位问题。

请参见查看性能指标。

创建只读实例专门负责查询。减轻主实例负载,分担数据库压力。
多表关联查询时,关联字段要加上索引。
尽量避免用select*语句进行全表扫描,可以指定字段或者添加where条件。

解决方法二

分析当前数据库运行线程来定位效率低的查询,再通过华为云数据管理服务(Data Admin Service,简称DAS)提供的建议优化这些SQL语句来降低实例的CPU使用率以提升系统效率。

连接RDS for MySQL实例。

具体操作请参见《关系型数据库快速入门》,通过内网和公网连接实例的内容。

执行以下命令,查看当前执行操作,定位效率低的查询。

show full processlist

查看Time和State列,如下图,长事务的ID为4038566。

得到需要优化的查询后,您可以使用华为云数据管理服务(Data Admin Service,简称DAS),通过SQL诊断查询,您可获知资源消耗大、执行耗时长、执行次数频繁的SQL语句。可根据诊断建议进行优化,保持数据库性能的稳定性。

登录到数据管理服务控制台。
在左侧导航栏,选择“DBA智能运维 > 实例列表”。
在实例上单击“详情”。

图1 实例列表

选择“SQL > SQL诊断”。
选择“数据库”,输入SQL语句,单击“SQL诊断”。

图2 SQL诊断

查看诊断详情,获取语句优化建议。

图3 诊断详情

暂仅支持 select/insert/update/delete 语句诊断,其中insert 必须带 select 子句。
暂不支持查询 information_schema、test、mysql 等保留库的语句。
暂不支持使用视图的语句。
SQL诊断功能会获取相关表结构和数据分布信息(非原始数据),该信息仅用于诊断逻辑,不会存储到DAS服务器。
获取表结构和数据分布信息的过程中,可能会对实例带来额外负载,但对性能影响甚微。
SQL诊断历史是唯一存储在DAS服务器上的数据,如果执行删除操作后,也将彻底从服务器上删除。

父主题: 性能调优

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家