首页 > 解决方案 > 增加索引是否会导致 AWS RDS 的写入 IOPS 上升?

问题描述

增加索引是否会导致 AWS RDS 的写入 IOPS 上升?

我使用的 AWS RDS 是 db.m3.xlarge 。RDS的存储为50G。

现在 AWS RDS 的写入 IOPS 为 120

50G RDS写入IOPS峰值为150

根据官方文件:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html

通用 SSD 存储的基准 I/O 性能为每个 GiB 3 IOPS,这意味着更大的卷具有更好的性能。

如何查询RDS写IOPS上升的原因?

标签: amazon-web-servicesamazon-rds

解决方案


让我试着把它分成两部分来回答这个问题:

我有 I/O 问题吗?

在 MySQL (RDS) 服务器上查找高写入 IOPS 背后的原因?


我有 I/O 问题吗?

使用 AWS RDS 时,没有传统的操作系统工具,例如 sysstat、iostat、dtstat 或 sar。了解 RDS 中发生的事情的工具是 cloudwatch 指标和提供的图表。

  • 读取和写入 IOPS 指标:通过总结 ReadIOPS 和 WriteIOPS,您将看到您的操作消耗了多少 IOPS。

  • DiskQueueDepth 指标:DiskQueueDepth 指标提供等待访问磁盘的未完成 IO(读/写请求)的数量。如果此指标经常高于 2,那么您迟早会面临性能问题。

使用上面的两个图表很容易确定您在 IOPS 中是配置不足还是过度配置。

  1. 如果您的DiskQueueDepth值始终在00.5之间,则说明您已过度配置。
  2. 如果您DiskQueueDepth始终高于2,那么您的配置不足。

在 MySQL (RDS) 服务器上查找高写入 IOPS 背后的原因?

有几种方法可以分析您的查询,但是当您将 RDS 与 MySQL 一起使用时,我建议您使用PERFORMANCE_SCHEMA它来轻松完成,因为您不需要外部软件(其中一些不完全兼容 RDS)。

您可以参考此视频,其中介绍了查询分析,例如 IOPS 和查询模式、用户和表的临时表创建监控。如需更具体的指南(特别是指标配置),您可以查看官方手册sys 架构文档

如果您需要快速查看发生了什么,您可以快速查看SHOW GLOBAL STATUS like 'com\_%'; 和SHOW GLOBAL STATUS like 'Hand%'; 在时间间隔查看是否增加了每单位时间的 SQL 查询数或每单位时间的引擎行操作数。


总而言之,Write 的增加IOPS通常意味着额外的 SQL 负载(显然),但也意味着许多其他事情,例如,由于查询优化器计划或数据基数的更改而导致执行的临时表过多或更糟糕的查询计划/尺寸。在采取任何行动之前,首先确定根本原因至关重要。

希望这对你有帮助!


推荐阅读