Skip to content

Commit

Permalink
mention IME in read hotspot and slow query
Browse files Browse the repository at this point in the history
Signed-off-by: Neil Shen <[email protected]>
  • Loading branch information
overvenus committed Nov 19, 2024
1 parent 3105999 commit 28daf6a
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 7 deletions.
4 changes: 3 additions & 1 deletion analyze-slow-queries.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ summary: 学习如何定位和分析慢查询。

#### 过期 key 多

如果 TiKV 上过期的数据比较多,在扫描的时候则需要处理这些不必要的数据,影响处理速度
如果 TiKV 上过期 MVCC 版本过多,或 GC 时间长导致累积了过多 MVCC,会影响扫描速度,因为需要处理这些不必要的 MVCC 版本

这可以通过 `Total_keys``Processed_keys` 判断,如果两者相差较大,则说明旧版本的 key 太多:

Expand All @@ -108,6 +108,8 @@ summary: 学习如何定位和分析慢查询。
...
```

在 TiDB v8.5 中,我们引入了内存引擎功能,可以加速这类慢查询,参考 [TiKV 内存引擎](/tikv-in-memory-engine.md)

### 其他关键阶段慢

#### 取 TS 慢
Expand Down
2 changes: 1 addition & 1 deletion tikv-configuration-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -2515,7 +2515,7 @@ Raft Engine 相关的配置项。
>
> 该配置项不支持通过 SQL 语句查询,但支持在配置文件中进行配置。
+ 是否开启内存引擎以加速多版本查询。有关内存引擎的信息,请参考 [TiKV 内存引擎(in](/tikv-in-memory-engine.md)
+ 是否开启内存引擎以加速多版本查询。有关内存引擎的信息,请参考 [TiKV 内存引擎](/tikv-in-memory-engine.md)
+ 默认值:false(即关闭内存引擎)

### `capacity` <span class="version-mark">从 v8.5.0 版本开始引入</span>
Expand Down
10 changes: 5 additions & 5 deletions tikv-in-memory-engine.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
---
title: TiKV 内存引擎(in-memory engine)
title: TiKV 内存引擎
summary: 了解内存引擎的适用场景和工作原理,使用内存引擎加速多版本记录查询。
---

# TiKV 内存引擎(in-memory engine)
# TiKV 内存引擎

## 适用场景

TiKV In-memory Engine 主要用于加速需要扫描大量 MVCC 历史版本的查询,即[查询扫描的总共版本数量(total_keys)远大于处理的版本数量(processed_keys)](/analyze-slow-queries.md#过期-key-多)
TiKV 内存引擎(In-memory Engine,以下简称 IME)主要用于加速需要扫描大量 MVCC 历史版本的查询,即[查询扫描的总共版本数量(total_keys)远大于处理的版本数量(processed_keys)](/analyze-slow-queries.md#过期-key-多)

例如以下场景:

- 业务需要查询频繁更新或删除的记录。
- 业务需要调整 gc_life_time,使 TiDB 保留较长时间的历史版本(比如 24 小时)。
- 业务需要调整 [tidb_gc_life_time](/garbage-collection-configuration.md#GC-配置),使 TiDB 保留较长时间的历史版本(比如 24 小时)。

## 原理解释

Expand Down Expand Up @@ -112,7 +112,7 @@ LIMIT 5;

示例:

下述结果显示 `db1.tbl1` 表上存在 MVCC 放大严重的查询,TiKV 在处理 1358517 个 MVCC 版本后,仅返回了 2 条记录
下述结果显示 `db1.tbl1` 表上存在 MVCC 放大严重的查询,TiKV 在处理 1358517 个 MVCC 版本后,仅返回了 2 个版本

```
+----------------------------+-----+-------------------+--------------+------------+-----------------------------------+--------------------+--------------------+--------------------+
Expand Down
4 changes: 4 additions & 0 deletions troubleshoot-hot-spot-issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,7 @@ TiDB 的 Coprocessor Cache 功能支持下推计算结果缓存。开启该功
## 打散读热点

在读热点场景中,热点 TiKV 无法及时处理读请求,导致读请求排队。但是,此时并非所有 TiKV 资源都已耗尽。为了降低延迟,TiDB v7.1.0 引入了负载自适应副本读取功能,允许从其他 TiKV 节点读取副本,而无需在热点 TiKV 节点排队等待。你可以通过 [`tidb_load_based_replica_read_threshold`](/system-variables.md#tidb_load_based_replica_read_threshold-从-v700-版本开始引入) 系统变量控制读请求的排队长度。当 leader 节点的预估排队时间超过该阈值时,TiDB 会优先从 follower 节点读取数据。在读热点的情况下,与不打散读热点相比,该功能可提高读取吞吐量 70%~200%。

## 使用 TiKV 内存引擎缓解因多版本导致的读热点

在 GC 时间过长或频繁更新删除时,可能会因扫描大量 MVCC 版本而导致读热点。针对这类热点,可通过开启内存存储引擎功能缓解,参考 [TiKV 内存存储引擎](/tikv-in-memory-engine.md)

0 comments on commit 28daf6a

Please sign in to comment.