首页/数据/数据库速查/MVCC 与 purge 滞后(history list length)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条
性能与调优57 条
Redis 命令96 条Redis 运维与场景124 条

MVCC 与 purge 滞后(history list length)

MVCC 靠 undo 保留旧版本:长事务不结束则旧版本无法回收(purge 滞后),undo 表空间膨胀、查询变慢;看 History list length 与 undo 占用预警。

数据库速查数据更新于 2026-10-12

观测

观测
SHOW ENGINE INNODB STATUS\G
-- TRANSACTIONS 段:History list length
SELECT COUNT(*) AS trx_count FROM information_schema.INNODB_TRX;
-- undo 表空间大小
SELECT NAME, FILE_SIZE FROM information_schema.INNODB_TABLESPACES
WHERE NAME LIKE 'innodb_undo%';
源头长事务 / 长只读(REPEATABLE READ 快照悬挂)
症状History list 持续增长、undo 膨胀、磁盘告警
治理找老事务结束它;拆分批量任务提交间隔
只读长事务同样拖住 purge:报表/导出任务用可关闭快照的连接或放到从库。

易错点

  • undo 涨到几十 GB 才开始查:先看 History list 增长趋势才能提前发现
  • 把 purge 滞后当磁盘问题扩容:根源老事务不除,扩容只是续命

数据来源与参考

  • MySQL 8.0 Reference Manual: InnoDB Multi-Versioning
  • MySQL 8.0 Reference Manual: InnoDB Purge

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌