RDS MySQL实例IOPS使用率较高的原因和解决方法

问题描述

阿里云RDS MySQL实例在日常使用中出现实例IOPS使用率较高的情况,本文将介绍造成该问题的常见原因及其解决方法。

问题原因

常见的问题原因如下所示:

  • 实例规格较小。
    实例内存满足不了需要缓存的数据,导致产生大量的物理IO,建议升级实例配置。
  • 查询执行效率低。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

您可以通过以下方法来解决IOPS使用率高的问题:

一键诊断

推荐您使用该方式进行处理。

注意:您也可以生成实例诊断报告,分析处理问题,详情请参见诊断报告

  1. 登录RDS控制台
  2. 单击实例列表,单击目标实例ID。
  3. 选择自治服务>一键诊断

  4. 查看当前实例活跃会话,确认SQL语句中执行的时间较长且状态为“sending data”。

  5. 勾选该会话,单击优化,通过优化中的建议,根据您实际情况做出相应优化,例如是否需要创建索引。

  6. 若没有直接给出优化建议,单击左侧导航栏的慢SQL,结合会话列表和慢SQL信息进行优化。

结束问题查询

您可以通过DMS控制台上的实例会话或命令查询或结束问题查询,建议您结束物理读(Physical_sync_read和Physical_async_read)高的查询。

说明:RDS实例在连接数满的情况下,无法通过DMS或者MySQL命令行工具连接登录实例,建议您先在RDS控制台的参数设置中将wait_timeout参数(单位秒)设置为比较小的值(比如60),让RDS实例主动关闭空闲时间超过60秒的连接,以便稍后可以通过DMS或者MySQL命令行工具连接访问实例。

通过实例会话结束问题查询

注意:需要业务应用先停止提交问题查询的操作,否则会出现不断重连的情况。

在一键诊断的会话管理页面。选中目标会话,单击结束选中会话即可。

通过命令行结束问题查询

  1. 通过DMS连接实例,详情请参见通过DMS登录RDS MySQL
  2. 执行show processlist;SQL语句查询,查看当前执行的查询语句。
    说明:若当前执行会话比较多,您也可以执行show full processlist;语句进行查询。
  3. 执行以下SQL语句,结束相关会话。
    kill [$ID]
    说明:[$ID]为上一步查询结果中ID列的值。

通过SQL诊断功能优化查询

  1. 通过DMS控制台登录实例
  2. 单击页面上方的SQL窗口,选择对应的库。
  3. 将查询语句粘贴到SQL窗口,单击SQL诊断,即可得到优化建议。
  4. 根据您实际情况,选择优化建议进行处理。例如添加索引,确认执行查询成本会大幅减少。

适用于

  • 云数据库RDS MySQL版

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。