amazon-web-services - 增加索引是否会导致 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上升的原因?
解决方案
让我试着把它分成两部分来回答这个问题:
我有 I/O 问题吗?
在 MySQL (RDS) 服务器上查找高写入 IOPS 背后的原因?
我有 I/O 问题吗?
使用 AWS RDS 时,没有传统的操作系统工具,例如 sysstat、iostat、dtstat 或 sar。了解 RDS 中发生的事情的工具是 cloudwatch 指标和提供的图表。
读取和写入 IOPS 指标:通过总结 ReadIOPS 和 WriteIOPS,您将看到您的操作消耗了多少 IOPS。
DiskQueueDepth 指标:DiskQueueDepth 指标提供等待访问磁盘的未完成 IO(读/写请求)的数量。如果此指标经常高于 2,那么您迟早会面临性能问题。
使用上面的两个图表很容易确定您在 IOPS 中是配置不足还是过度配置。
- 如果您的
DiskQueueDepth
值始终在0和0.5之间,则说明您已过度配置。 - 如果您
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 负载(显然),但也意味着许多其他事情,例如,由于查询优化器计划或数据基数的更改而导致执行的临时表过多或更糟糕的查询计划/尺寸。在采取任何行动之前,首先确定根本原因至关重要。
希望这对你有帮助!
推荐阅读
- python - 路由器中的 URL 模式不匹配 | Django Restframewok
- android - 如何在不自动播放过渡的情况下恢复 MotionLayout 的过渡状态?
- flutter - 无法从现有项目中创建桌面应用程序支持
- c++ - 交换矢量以释放它
- php - Laravel Livewire 事件(例如点击)不起作用。我正在使用 laravel 7
- java - 根据配置的时间表,给定的触发器永远不会触发 Quartz
- c++ - 为什么在一个翻译单元中定义的函数可以在另一个翻译单元中访问,在该翻译单元中它被前向声明为静态?
- angular - Angular 9. 页面上的同步 *ngFor
- php - 目标类 [Admin\AdminController] 不存在
- java - 分到年、日、小时和分钟转换器