为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
TiDB 4.0
【概述】 场景 + 问题概述
有三种读取方式,ReadIndex Read、Lease Read、Follower Read,请问默认值是Lease Read吗,我记得前面在看PCTP的视频时,介绍默认是ReadIndex。
【背景】 做过哪些操作
无
【现象】 业务和数据库现象
无
【问题】 当前遇到的问题
无
【业务影响】
无
【TiDB 版本】
4.0
【应用软件及版本】
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
jiyf
(Jiyf)
2
是不是三个概念搞混了:
- Lease Read 是 raft leader 用来确认其仍然是 leader 的租约,在 lease 租约内,不允许其他 voter 选主成功,leader 通过租约时间确认其 leader 地位(不用通过发送心跳确认)。
- Follower Read 指的是从 follower 节点读,follower 是 raft 一个角色。
- ReadIndex Read 是在 Follower Read(从 follower 或者 learner 节点读取)情况下,保证一致性读的方法,就是在 follower 或者 learner 节点读取的时候,向 leader 确认下当前的位置,如果当前 follower 没有 apply 到,那么会等到 apply 到这个位置后再进行读取。
从 tiflash 读,那是用的 follower read,使用 ReadIndex Read 方法来保证读取数据一致性。
3 个赞
首先,功能层面,Lease Read 是 ReadIndex 的一种优化,当 leader 没有租约的时候,还需要通过 ReadIndex 确认每个 Region 的 Leader 位置。应该是二者均用。
其次,时间层面,2016 年 11 月 25 日 lease read 相关 PR 就被合进 TiKV 了。也就是说 TiKV 1.0 其实就有这个优化了。
1 个赞
谢谢,明白了,正常情况下就是Lease Read,不用发心跳,这样效率更好。
system
(system)
关闭
8
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。