详情页标题前

阿里云RDS数据库RDS MySQL I/O高问题-云淘科技

详情页1

RDS MySQL的I/O性能受硬件层存储介质、软件层数据库内核架构和具体SQL语句(扫描或修改数据量)的影响。本文介绍实例I/O高的原因和解决方案。

高吞吐导致实例I/O高

  • 现象

    如果上有很多索引或字段,频繁地更新、删除、插入,读取数据和刷新时会有大量的I/O。

    您可以在控制台的自治服务 > 性能趋势页面,单击性能趋势页签,查看读写负载情况。

  • 解决方案

    建议降低读写频率或升级实例规格、优化刷新脏页相关的参数来解决高吞吐问题。和刷新脏页相关的参数如下:

    • innodb_max_dirty_pages_pct:缓冲池中允许的脏页百分比,默认值为75。

    • innodb_max_dirty_pages_pct_lwm:脏页比例的低水位线。当缓冲池里的脏页比例超过这个低水位线时,能够触发脏页预刷功能,逐步控制脏页比例。默认值为0,表示禁用该功能。

      说明

      innodb_max_dirty_pages_pct_lwm的值不能大于innodb_max_dirty_pages_pct的值,否则会强制修改为与innodb_max_dirty_pages_pct相同。

    • innodb_io_capacity:设置InnoDB后台任务每秒执行的I/O操作数的上限,影响刷新脏页和写入缓冲池的速率。默认值为20000。

    • innodb_io_capacity_max:如果刷新操作过于落后,InnoDB可以超过innodb_io_capacity的限制进行刷新,但是不能超过本参数的值。默认值为40000。

临时表导致实例I/O高

  • 现象

    如果临时目录很大,可能存在慢SQL排序、去重等操作导致创建很大的临时表。临时表写入也会造成I/O增加。

    您可以在控制台的自治服务 > 性能趋势页面,单击性能趋势页签,查看tmp或other目录大小。

  • 解决方案

    建议进行SQL优化,避免慢SQL。数据库自治服务DAS提供自助SQL优化功能,具体操作,请参见SQL优化。

读取冷数据导致实例I/O高

  • 现象

    如果SQL查询或修改的数据不在缓冲池(Buffer Pool),则需要从存储中读取,可能会产生大量的I/O吞吐。

    您可以在控制台的自治服务 > 性能趋势页面,单击性能趋势页签,查看Buffer Pool命中率。

  • 解决方案

    根据业务场景重新设计缓存策略,或者升级实例规格。

DDL语句导致实例I/O高

  • 现象

    DDL语句可能会重建表空间,期间会扫描全表数据、创建索引排序、刷新新表产生的脏页,这些都会导致大量的I/O吞吐。另外一种场景是删除大表造成的I/O抖动。

    您可以在控制台的监控与报警页面,单击标准监控页签内的标准视图,可以查看实例的磁盘空间和IOPS信息。

  • 解决方案

    可以使用阿里云自研内核AliSQL提供的异步删除大文件功能解决问题,更多信息,请参见Purge Large File Asynchronously。

大事务写Binlog导致实例I/O高

  • 现象

    事务只有在提交时才会写Binlog文件,如果存在大事务,例如一条Delete语句删除大量的行,可能会产生几十GB的Binlog文件,Binlog文件刷新到磁盘时,会造成很高的I/O吞吐。

  • 解决方案

    建议尽量将事务拆分,避免大事务和降低刷新磁盘频率。

附:InnoDB I/O系统介绍

InnoDB通过一套独立的I/O系统来处理数据页的读取和写入,如果SQL请求的数据页不在Buffer Pool中,会产生物理I/O,需要读写底层存储的数据:

  • 读数据页操作

    通过同步I/O实现,同步I/O调用底层的读接口。

  • 写数据页操作

    通过异步I/O实现,例如后台线程刷新脏页,后台I/O线程会异步的将脏页刷到磁盘。

除了对普通数据文件的读写I/O操作,写Redo日志、写Undo日志、写Binlog日志、排序临时表、重建DDL表空间等也会造成大量I/O。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/154719.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • DMS insert 语句会生成回滚SQL吗?-云小二-阿里云

    insert 语句会生成回滚SQL吗 以下为热心网友提供的参考意见 确实,DMS的数据追踪功能可以对INSERT、UPDATE、DELETE等操作进行追踪,并能生成相应的逆向回滚语句。当执行INSERT操作后,若需要回滚,DMS会生成对应的DELETE语句。因此,在实际操作中,如果遇到SQL执行错误或异常的情况,可以选择执行生成的回滚SQL来撤销执行的操作,…

    阿里云 2023年12月12日
  • 阿里云大数据开发治理平台 DataWorks上传数据-云淘科技

    DataWorks支持将本地的CSV文件或部分文本文件数据直接上传至MaxCompute表中,本文为您介绍操作步骤详情。 前提条件 已准备好用于接收本地数据的MaxCompute表。 您可以选择已创建的MaxCompute表,或者直接新创建一个MaxCompute表,建表操作可参见创建MaxCompute表。 使用限制 当前仅支持上传本地数据至MaxComp…

    2023年12月10日
  • 阿里云人工智能平台PAI通用视频预测-云淘科技

    对于通过视频训练类组件获得的视频模型,您可以使用通用视频预测组件对其进行离线推理。本文介绍通用视频预测组件的配置方法及使用示例。 前提条件 已开通OSS并完成授权,详情请参见开通OSS服务和PAI访问云产品授权:OSS。 使用限制 仅PAI-Designer提供该算法组件。 算法简介 通用视频预测组件位于组件库视觉算法文件夹下的离线模型预测子文件夹,可以对所…

    2023年12月10日
  • 为什么DMS批量执行sql语句 审核不通过?-云小二-阿里云

    sql 批量执行sql语句 审核不通过 以下为热心网友提供的参考意见 这个需要在安全规则中设置下,在提示的安全规则路径下,加上update命令即可—该回答整理自钉群“阿里云DMS数据管理用户交流群”

    2023年12月18日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 有没部署过flink sql gateway的呀?一直报错?-云小二-阿里云

    有没部署过flink sql gateway的呀?一直报错 org.apache.thrift.protocol.TProtocolException: Missing version in readMessageBegin, old client? 以下为热心网友提供的参考意见 jdbc:hive2://sql-gateway-ip:10000/defau…

    阿里云 2024年1月4日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。