麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
534
2023-06-10
Undo 日志用什么存储结构支持无锁并发写入?
redo 日志只有崩溃恢复的时候才能派上用场,undo 日志不一样,它承担着多重职责,MySQL 崩溃恢复、以及正常提供服务期间,都有它的身影。
按照使用频次,undo 日志的多重职责如下:
职责 1,为 MVCC 服务,减少读写事务之间的相互影响,提升数据库的并发能力。
职责 2,保证数据库运行过程中的数据一致性。事务回滚时,把事务中被修改的数据恢复到修改之前的状态。
职责 3,保证数据库崩溃之后的数据一致性。崩溃恢复过程中,恢复没有完成提交的事务,并根据事务的状态和 binlog 日志是否写入了该事务的 xid 信息,共同决定事务是提交还是回滚。
undo 日志需要为数据一致性和 MVCC 服务,除了要支持多事务同时写入日志,还要支持多事务同时读取日志。
为了有更好的读写并发性能,它拥有与 redo 日志完全不一样的存储结构。
本文我们就来聊聊 undo 日志的存储结构,它是怎么写入 undo 日志文件的,以及事务二阶段提交过程中和它有关的操作。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。