关于RDS MySQL IOPS 使用率高的原因和处理事项
发布日期:2015-11-7 12:11:29
关于RDS MySQL IOPS 使用率高的原因和处理事项 通常来说,RDS MySQL 实例在日常使用中有时会出现实例 IOPS 使用率高的情况,比如: 通常来说,RDS MySQL 实例在日常使用中有时会出现实例 IOPS 使用率高的情况,比如: 1. 原因 查询执行效率低,扫描过多数据行。 实例内存不能够满足缓存数据或排序等需要,从而导致产生大量物理IO。 2. 解决办法 可以通过下面2种途径中的1种来处理IOPS使用率高的问题,也可以结合使用。 生成实例当前诊断报告(推荐方式),具体操作如下: DMS =》实例信息 =》实例会话 或者 show full processlist; 查看正在运行的查询,通过SQL窗口优化功能优化查询。 2.1 诊断报告 在DMS中生成当前的实例诊断报告,查看其中的 会话列表、SQL优化、慢SQL汇总部分,建议应用SQL优化给出的意见。如下图所示: 会话列表: SQL优化: 慢SQL汇总: 建议应用SQL优化给出的意见: 在表 large_tab_03 字段 col01 上添加索引 - alter table large_tab_03 add index idx_col01(col01)。 索引添加完毕后,查询执行快速完成,IOPS使用率降低。如下图: 注: 1. 添加索引操作建议在业务低峰期进行;如果添加过程中出现等待表元数据锁的情况,请参考:RDS MySQL 表上 Metadata lock 的产生和处理 2. 在SQL优化没有直接给出建议的情况下,需要结合会话列表、慢SQL汇总的信息进行查询优化。 2.2 实例会话和SQL优化 有时候会出现 实例诊断报告不可用 或者无法立刻应用其建议的情况,我们可以可以先通过 DMS =》实例信息 =》实例会话 来终止问题查询(需要应用方面首先停止提交问题查询,441111否则会出现不断终止、不断出现的情况)。如下图: 也可以通过命令 show processlist; 或 show full processlist; 来查看会话情况,通过 kill 命令来终止问题查询。如下图: 如果当前执行会话比较对,可以通过 show full processlist; 来确定问题会话,如下图: 附加:为了方便阅读,上图省却了部分命令输出信息。 可以考虑将物理读(Physical_sync_read 和 Physical_async_read)高的查询终止掉。 也可以通过 SQL窗口的优化功能,获取相关查询优化建议。 如问题还未解决,请联系售后技术支持。
|