Skip to content

Commit

Permalink
*: make the scene of stale read clearer (pingcap#6552)
Browse files Browse the repository at this point in the history
  • Loading branch information
nolouch authored Jul 1, 2021
1 parent 514dfd5 commit 898acc3
Showing 1 changed file with 3 additions and 7 deletions.
10 changes: 3 additions & 7 deletions stale-read.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,17 @@ summary: 介绍 Stale Read 功能和使用场景。

# Stale Read 功能的使用场景

本文档介绍 Stale Read 的使用场景。Stale Read 是一种读取历史数据版本的机制,读取 TiDB 中存储的历史数据版本。使用 Stale Read 功能,你能从指定时间点或时间范围内读取对应的历史数据,从而避免数据同步带来延迟。

在内部实现上,TiDB 通过 Stale Read 可以从任意一个副本上读取到该指定时间点或时间范围内尽可能新的数据,并在这个过程中始终保证数据的一致性约束。
本文档介绍 Stale Read 的使用场景。Stale Read 是一种读取历史数据版本的机制,读取 TiDB 中存储的历史数据版本。通过 Stale Read 功能,你能从指定时间点或时间范围内读取对应的历史数据,从而避免数据同步带来延迟。当使用 Stale Read 时,TiDB 默认会随机选择一个副本来读取数据,因此能利用所有副本。如果你的应用程序不能容忍读到非实时的数据,请勿使用 Stale Read,否则读到的数据可能不是最新成功写入的数据。

> **警告:**
>
> Stale Read 目前为实验特性。不推荐在生产环境下使用该特性。
## 场景描述

+ 场景一:如果一个事务仅涉及只读操作,并且一定程度上可容忍牺牲实时性,你可以使用 Stale Read 功能来读取历史数据。由于牺牲了一定的实时性,使用 Stale Read 后,TiDB 可将请求发送到对应数据的任意一个副本,使得查询的执行获得更大的吞吐量。

+ 场景二:在一些小表的查询场景中,如果使用了强一致性读,数据可能集中在某一个存储节点上,导致查询压力集中在该节点,成为整个查询的瓶颈。使用 Stale Read 功能后,TiDB 可以将请求分发到对应数据的每一个副本上,提升了查询整体的吞吐能力,从而显著提升查询性能。
+ 场景一:如果一个事务仅涉及只读操作,并且一定程度上可容忍牺牲实时性,你可以使用 Stale Read 功能来读取历史数据。由于牺牲了一定的实时性,使用 Stale Read 后,TiDB 可以让请求分发到任一个副本上,使得查询的执行获得更大的吞吐量。特别是在一些小表的查询场景中,如果使用了强一致性读,Leader 可能集中在某一个存储节点上,导致查询压力集中在该节点,成为整个查询的瓶颈。通过 Stale Read,可以提升了查询整体的吞吐能力,从而显著提升查询性能。

+ 场景三:在部分跨数据中心部署的场景中,如果使用了强一致性的 Follower 读,为了读到的数据与 Leader 上的数据一致,会产生跨数据中心获取 `Readindex` 来校验的请求,导致整体查询的访问延迟增加。通过使用 Stale Read 功能,可以牺牲一定的实时性,可就近访问对应数据所在当前中心的副本,避免跨数据中心的网络延迟,降低整体查询的访问延迟。详情参考[在三数据中心下就近读取数据](/best-practices/three-dc-local-read.md)
+ 场景二:在部分跨数据中心部署的场景中,如果使用了强一致性的 Follower 读,为了读到的数据与 Leader 上的数据一致,会产生跨数据中心获取 `Readindex` 来校验的请求,导致整体查询的访问延迟增加。通过使用 Stale Read 功能,可以牺牲一定的实时性,就近访问对应数据所在当前中心的副本,避免跨数据中心的网络延迟,降低整体查询的访问延迟。详情参考[在三数据中心下就近读取数据](/best-practices/three-dc-local-read.md)

## 使用方法

Expand Down

0 comments on commit 898acc3

Please sign in to comment.