文档首页/ 云数据库 RDS/ 故障排除/ RDS for MySQL/ 性能资源类/ 长事务导致UNDO增多引起磁盘空间满
更新时间:2022-10-26 GMT+08:00

长事务导致UNDO增多引起磁盘空间满

场景描述

实例触发磁盘满告警,一段时间后磁盘满告警自动恢复。

原因分析

  • 由于MVCC机制,MySQL更新表中数据时会生成undo日志,会占用磁盘空间;所有会话的相关事务提交或回滚后,undo日志会被清理,导致磁盘空间下降。
  • 当存在长事务时,长事务只要不提交,其他会话对相关表更新生成的undo就无法清理,导致磁盘空间一直上涨。

排查思路:

  • 通过如下语句,检查是否有长时间不提交事务。

    select t.*,to_seconds(now())-to_seconds(t.trx_started) idle_time from INFORMATION_SCHEMA.INNODB_TRX t \G;

  • 通过审计日志或慢日志,检查是否存在大事务一次性插入大量数据。

解决方案

  • kill相应的长事务。
  • 建议业务侧避免在磁盘空间紧张时,执行长事务不提交,或执行大量插入。
  • 提前进行磁盘扩容。