在使用云数据库RDS MySQL版的过程中,经常会因CPU使用率过高而导致的系统异常,例如响应变慢、无法获取连接和出现报错等。
在CPU使用率过高的场景中,有95%以上的问题都是由异常SQL所致。当业务提交的SQL语句不够优化时,就会对数据库的性能产生如下影响。另外,大量行锁冲突、行锁等待或后台任务也有可能导致实例CPU使用率过高,但这些状况出现的概率非常低,本文不做讨论。
说明:有关逻辑读和物理读的相关介绍请参见更多信息。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
本文将主要介绍如何使用RDS的CloudDBA功能来定位系统中的慢SQL和其它异常SQL语句,然后您可通过CloudDBA提供的建议优化这些SQL语句,降低实例的CPU使用率以提升系统效率。
说明:目前只支持显示最近1个月内的慢SQL数据。
若使用SQL统计功能排查异常SQL语句,请参见使用方法。
注意:SQL审计需另外计费,为节约成本,您可以在查看数据库SQL语句前开通SQL审计,然后待问题排查完毕后再关闭该功能。
数据库中的数据是以数据块为基本操作单位,一个MySQL数据块是8KB,一次逻辑读或物理读对应一个数据块的读取操作。当数据库执行业务查询语句(包括数据修改操作)时,CPU会先从内存中请求数据块。如果内存中有对应的数据,CPU执行计算任务后,将结果返回给用户。如果内存中没有对应的数据,系统会触发从磁盘读取数据的操作。这两个数据获取过程分别是逻辑读和物理读,如下图所示。
如果您的问题仍未解决,您可以在阿里云社区提交工单联系阿里云技术支持。