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)设置为 followerleader-and-follower、 或 closest-adaptive 开启 TiDB 的 Follower Read 功能:

    你可以通过 了解该变量的更多细节。

    在需要使用从 Follower 节点读取数据时,通过 setSessionReplicaRead(conn, FollowReadMode.LEADER_AND_FOLLOWER) 方法在当前 Session 开启能够在 Leader 节点和 Follower 节点进行负载均衡的 Follower Read 功能,当连接断开时,会恢复到原来的模式。