Follower Read
在 TiDB 当中,数据是以 为单位,分散在集群中所有的节点上进行存储的。一个 Region 可以存在多个副本,副本又分为一个 leader 和多个 follower。当 leader 上的数据发生变化时,TiDB 会将数据同步更新到 follower。
默认情况下,TiDB 只会在同一个 Region 的 leader 上读写数据。当系统中存在读取热点 Region 导致 leader 资源紧张成为整个系统读取瓶颈时,启用 Follower Read 功能可明显降低 leader 的负担,并且通过在多个 follower 之间均衡负载,显著地提升整体系统的吞吐能力。
如果发现确实存在热点问题,你可以通过阅读 TiDB 热点问题处理章节进行逐一排查,以便从应用程序层面上避免热点的产生。
如果读取热点的确无法避免或者改动的成本很大,你可以尝试通过 Follower Read 功能将读取请求更好的负载均衡到 follower region。
优化跨数据中心部署的延迟
- SQL
在 SQL 中,你可以将变量 的值(默认为 leader
)设置为 follower
、 leader-and-follower
、 或 closest-adaptive
开启 TiDB 的 Follower Read 功能:
你可以通过 了解该变量的更多细节。
在需要使用从 Follower 节点读取数据时,通过 setSessionReplicaRead(conn, FollowReadMode.LEADER_AND_FOLLOWER)
方法在当前 Session 开启能够在 Leader 节点和 Follower 节点进行负载均衡的 Follower Read 功能,当连接断开时,会恢复到原来的模式。