
# 长事务导致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相应的长事务。
- 建议业务侧避免在磁盘空间紧张时，执行长事务不提交，或执行大量插入。
- 提前进行磁盘扩容。
 
