tidb 是否不存在undo

请问下各位老师,tidb 应该是不存在undo吧,毕竟mvcc 是靠保留多个版本来实现的,而不是类似于MySQL的依靠当前版本结合undo log才能回做出上一个版本?

undo 也存在的,只不过处理方式不太一样了,采用 WAL 的方式进行记录的(Mysql redo 和 undo 也不会分开)
如果出现了断电的极端情况,tidb 会优先从 WAL 中加载记录,发起继续处理,保证已提交的一致性和完整性

顺序写的日志先行,内存中的undo是会出现掉电丢数情况的。找上一个版本要靠tso

:+1::+1::+1:

MySQL的MVCC是利用UNDO和Read View来实现的,数据的历史版本是存放在UNDO中的,通过构建Read View来判断数据版本的可见性。TiDB没有UNDO(WAL也只是为了实现灾难恢复,和MVCC无关,类似于redo),它是将所有数据的历史版本都存下来,通过将数据历史版本的commit_ts与当前事务的start_ts进行比较来判断数据的可见性

https://docs.pingcap.com/zh/tidb/dev/rocksdb-overview#rocksdb-简介

wal 其实是类似于redo的功能,tidb 应该是没有undo 的日志的

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。