TiDB 4.0版本,默认的读取方式是Lease Read吗

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
TiDB 4.0

【概述】 场景 + 问题概述
有三种读取方式,ReadIndex Read、Lease Read、Follower Read,请问默认值是Lease Read吗,我记得前面在看PCTP的视频时,介绍默认是ReadIndex。
【背景】 做过哪些操作

【现象】 业务和数据库现象

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】
4.0
【应用软件及版本】


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

是不是三个概念搞混了:

  • 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:
https://pingcap.com/zh/blog/lease-read
关于follower read,是可以配置的:
https://docs.pingcap.com/zh/tidb/stable/follower-read#follower-read

首先,功能层面,Lease Read 是 ReadIndex 的一种优化,当 leader 没有租约的时候,还需要通过 ReadIndex 确认每个 Region 的 Leader 位置。应该是二者均用。

其次,时间层面,2016 年 11 月 25 日 lease read 相关 PR 就被合进 TiKV 了。也就是说 TiKV 1.0 其实就有这个优化了。

1 个赞

谢谢,明白了,正常情况下就是Lease Read,不用发心跳,这样效率更好。

你说的对。

你这是在评论帖子吗?

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