readindex

培训视频中,readindex 中提到,其他会话的读取是利用readindex机制是在没有考虑mvcc机制下,那如果在正常环境下,readindex是不是就用不到了?

考试过去久了,看你说的内容没有回忆起上下文,能不能说一下,是哪个视频的哪个时间上说的?
下面几个文章能不能帮到你:
https://pingcap.com/zh/blog/lease-read
https://pingcap.com/zh/blog/linearizability-and-raft
https://pingcap.com/zh/blog/tikv-source-code-reading-19

3 个赞

mvcc决定读取哪些时间点数据,readindex是读取这个时间点数据的方式,如果由于apply慢导致到这个时间点数据还未apply那就需要等apply完

3 个赞

mvcc和readindex不是一回事

2 个赞

参考:
1、https://blog.csdn.net/TiDB_PingCAP/article/details/108255744
2、TiDB MVCC 多版本保存机制及其对性能的影响

3 个赞

想到了一个点,如果读取的时候利用mvcc确定某个读取时间点,这个情况下数据肯定的apply到rocksdb kv内,这样如果再利用readindex是不是读取效率就降低了,要等当前的index apply之后才读取到

1 个赞

所以tidb有lease read解决readindex问题,前面有人发链接了

1 个赞

mvcc 是多版本并发控制,在tidv里是多个版本数据并存的情况(每次都是读取最大版本的)
readindex 的作用是读取当前时间点的时间,需要验证是否线性一致。

类似的有 Lease Read, Follower Read,都是为了保证数据的线性一致。

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