长事务为什么会拖慢数据库:MVCC 与版本清理后端随身听

长事务为什么会拖慢数据库:MVCC 与版本清理

12分钟 ·
播放数1
·
评论数0

一个只执行查询、没有锁住业务行的事务,为什么也可能让数据库空间上涨、查询变慢?因为它保留的旧快照,可能迫使 InnoDB 长时间保存大量历史版本。

这一集从报表任务忘记提交的场景出发,讲清一致性读、读视图、撤销日志和后台清理如何协作,以及长事务为什么会把版本链越拖越长。

重点内容:

- 普通查询如何在不阻塞更新的情况下读取旧版本

- 读视图如何判断某个版本是否可见

- 撤销日志为什么既用于回滚,也用于一致性读

- 长事务如何阻止历史版本被清理

- 版本链变长为什么会增加读取成本

- 为什么只读事务也应及时结束

- 如何发现并治理长期未提交事务

英文词对照:

- MVCC:多版本并发控制

- Consistent Read:一致性读

- Read View:读视图

- Undo Log:撤销日志

- Version Chain:版本链

- Purge:历史版本清理

- History List Length:历史列表长度

- Long-running Transaction:长事务