Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
qiancai committed Nov 9, 2023
2 parents 67a34e7 + ba508ec commit f5b86ac
Show file tree
Hide file tree
Showing 19 changed files with 407 additions and 10 deletions.
2 changes: 2 additions & 0 deletions TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@
- [使用 Top SQL 定位系统资源消耗过多的查询](/dashboard/top-sql.md)
- [通过日志定位消耗系统资源多的查询](/identify-expensive-queries.md)
- [保存和恢复集群现场信息](/sql-plan-replayer.md)
- [理解 TiKV 中的 Stale Read 和 safe-ts](/troubleshoot-stale-read.md)
- [获取支持](/support.md)
- 性能调优
- 优化手册
Expand Down Expand Up @@ -634,6 +635,7 @@
- [存储](/tidb-storage.md)
- [计算](/tidb-computing.md)
- [调度](/tidb-scheduling.md)
- [TSO](/tso.md)
- 存储引擎 TiKV
- [TiKV 简介](/tikv-overview.md)
- [RocksDB 简介](/storage-engine/rocksdb-overview.md)
Expand Down
2 changes: 1 addition & 1 deletion correlated-subquery-optimization.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,4 @@ explain select * from t1 where t1.a < (select sum(t2.a) from t2 where t2.b = t1.
+------------------------------------------+-----------+-----------+------------------------+--------------------------------------------------------------------------------------+
```

在执行了关闭关联规则的语句后,可以在 `IndexRangeScan_25(Build)``operator info` 中看到 `range: decided by [eq(test.t2.b, test.t1.b)]`。这部分信息就是关联依赖未被解除时,TiDB 使用关联条件进行索引范围查询的显示结果。
在执行了关闭关联规则的语句后,可以在 `IndexRangeScan_42(Build)``operator info` 中看到 `range: decided by [eq(test.t2.b, test.t1.b)]`。这部分信息就是关联依赖未被解除时,TiDB 使用关联条件进行索引范围查询的显示结果。
2 changes: 1 addition & 1 deletion explain-subqueries.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ EXPLAIN SELECT * FROM t1 WHERE id IN (SELECT t1_id FROM t2);

```

由上述查询结果可知,TiDB 通过索引连接操作 `| IndexJoin_14` 将子查询做了连接转化。该执行计划首先在 TiKV 侧通过索引扫描算子 `└─IndexFullScan_31` 读取 `t2.t1_id` 列的值,然后由 `└─StreamAgg_39` 算子的部分任务在 TiKV 中对 `t1_id` 值进行去重,然后采用 `├─StreamAgg_49(Build)` 算子的部分任务在 TiDB 中对 `t1_id` 值再次进行去重,去重操作由聚合函数 `firstrow(test.t2.t1_id)` 执行;之后将操作结果与 `t1` 表的主键相连接,连接条件是 `eq(test.t1.id, test.t2.t1_id)`
由上述查询结果可知,TiDB 通过索引连接操作 `IndexJoin_15` 将子查询做了连接转化。该执行计划首先在 TiKV 侧通过索引扫描算子 `└─IndexFullScan_26` 读取 `t2.t1_id` 列的值,然后由 `└─StreamAgg_34` 算子的部分任务在 TiKV 中对 `t1_id` 值进行去重,然后采用 `├─StreamAgg_44(Build)` 算子的部分任务在 TiDB 中对 `t1_id` 值再次进行去重,去重操作由聚合函数 `firstrow(test.t2.t1_id)` 执行;之后将操作结果与 `t1` 表的主键相连接,连接条件是 `eq(test.t1.id, test.t2.t1_id)`

## Inner join(有 `UNIQUE` 约束的子查询)

Expand Down
15 changes: 13 additions & 2 deletions grafana-tidb-dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,22 @@ aliases: ['/docs-cn/dev/grafana-tidb-dashboard/','/docs-cn/dev/reference/key-mon

### KV Request

下面的监控指标与发送给 TiKV 的请求相关。重试请求会被多次计数。

- KV Request OPS:KV Request 根据 TiKV 显示执行次数
- KV Request Duration 99 by store:根据 TiKV 显示 KV Request 执行时间
- KV Request Duration 99 by type:根据类型显示 KV Request 的执行时间
- Stale Read OPS:每秒执行的 Stale Read 的数量,根据结果分为 hit 和 miss 进行统计
- Stale Read Traffic:Stale Read 消耗的流量,根据结果分为 hit 和 miss 进行统计
- Stale Read Hit/Miss Ops
- **hit**:每秒成功执行 Stale Read 的请求数量
- **miss**:每秒尝试执行 Stale Read 但失败的请求数量
- Stale Read Req Ops
- **cross-zone**:每秒尝试在远程可用区执行 Stale Read 的请求数量
- **local**:每秒尝试在本地可用区执行 Stale Read 的请求数量
- Stale Read Req Traffic
- **cross-zone-in**:尝试在远程可用区执行 Stale Read 的请求的响应的传入流量
- **cross-zone-out**:尝试在远程可用区执行 Stale Read 的请求的响应的传出流量
- **local-in**:尝试在本地可用区执行 Stale Read 的请求的响应的传入流量
- **local-out**:尝试在本地可用区执行 Stale Read 的请求的响应的传出流量

### PD Client

Expand Down
14 changes: 14 additions & 0 deletions grafana-tikv-dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,20 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Total pessimistic locks memory size:内存悲观锁占用内存的总大小
- In-memory pessimistic locking result:将悲观锁仅保存到内存的结果,其中 full 表示因为超过内存限制而无法将悲观锁保存至内存的次数

### Resolved-TS

- Resolved-TS worker CPU:resolved-ts worker 线程的 CPU 使用率
- Advance-TS worker CPU:advance-ts worker 线程的 CPU 使用率
- Scan lock worker CPU:scan lock worker 线程的 CPU 使用率
- Max gap of resolved-ts:在当前 TiKV 中,所有活跃 Region 的 resolved-ts 与当前时间的最大差值
- Max gap of safe-ts:在当前 TiKV 中,所有活跃 Region 的 safe-ts 与当前时间的最大差值
- Min Resolved TS Region:resolved-ts 最小的 Region 的 ID
- Min Safe TS Region:safe-ts 最小的 Region 的 ID
- Check Leader Duration:处理 leader 请求所花费的时间的直方图,从发送请求到接收到 leader 的响应
- Max gap of resolved-ts in Region leaders:在当前 TiKV 中,所有活跃 Region 的 resolved-ts 与当前时间的最大差值,只包含 Region leader
- Min Leader Resolved TS Region:resolved-ts 最小的 Region 的 ID,只包含 Region leader
- Lock heap size:resolved-ts 模块中用于跟踪锁的堆的大小

### Memory

- Allocator Stats:内存分配器的统计信息
Expand Down
2 changes: 1 addition & 1 deletion hardware-and-software-requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器
> **注意:**
>
> - 生产环境中的 TiDB 和 PD 可以部署和运行在同一台服务器上,如对性能和可靠性有更高的要求,应尽可能分开部署。
> - 生产环境强烈推荐使用更高的配置
> - 强烈建议分别为生产环境中的 TiDB、TiKV 和 TiFlash 配置至少 8 核的 CPU。强烈推荐使用更高的配置,以获得更好的性能
> - TiKV 硬盘大小配置建议 PCIe SSD 不超过 4 TB,普通 SSD 不超过 1.5 TB。
> - TiFlash 支持[多盘部署](/tiflash/tiflash-configuration.md#多盘部署)
> - TiFlash 数据目录的第一块磁盘推荐用高性能 SSD 来缓冲 TiKV 同步数据的实时写入,该盘性能应不低于 TiKV 所使用的磁盘,比如 PCIe SSD。并且该磁盘容量建议不小于总容量的 10%,否则它可能成为这个节点的能承载的数据量的瓶颈。而其他磁盘可以根据需求部署多块普通 SSD,当然更好的 PCIe SSD 硬盘会带来更好的性能。
Expand Down
Binary file added media/stale-read/example-ops.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/stale-read/example-ts-gap.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/stale-read/metrics-hit-miss.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/stale-read/metrics-ops.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/stale-read/traffic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion releases/release-6.5.4.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ TiDB 版本:6.5.4
+ TiKV

- 使用 gzip 压缩 `check_leader` 请求以减少流量 [#14553](https://github.com/tikv/tikv/issues/14553) @[you06](https://github.com/you06)
- 添加 `Max gap of safe-ts``Min safe ts region` 监控项以及 `tikv-ctl get_region_read_progress` 命令,用于更好地观测和诊断 resolved-ts 和 safe-ts 的状态 [#15082](https://github.com/tikv/tikv/issues/15082) @[ekexium](https://github.com/ekexium)
- 添加 `Max gap of safe-ts``Min safe ts region` 监控项以及 `tikv-ctl get-region-read-progress` 命令,用于更好地观测和诊断 resolved-ts 和 safe-ts 的状态 [#15082](https://github.com/tikv/tikv/issues/15082) @[ekexium](https://github.com/ekexium)
- 在 TiKV 中暴露部分 RocksDB 配置,允许用户禁用 TTL 和定期数据整理等特性 [#14873](https://github.com/tikv/tikv/issues/14873) @[LykxSassinator](https://github.com/LykxSassinator)
- 避免写 Titan manifest 文件时持有锁导致影响其他线程 [#15351](https://github.com/tikv/tikv/issues/15351) @[Connor1996](https://github.com/Connor1996)

Expand Down
2 changes: 1 addition & 1 deletion releases/release-7.1.2.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ TiDB 版本:7.1.2

- 优化数据整理检查机制,当触发 Region Split 时,如果没有可以分裂的 key,触发一次数据整理,以消除过多的 MVCC 版本 [#15282](https://github.com/tikv/tikv/issues/15282) @[SpadeA-Tang](https://github.com/SpadeA-Tang)
- 消除 Router 对象中的 LRUCache,降低内存占用,防止 OOM [#15430](https://github.com/tikv/tikv/issues/15430) @[Connor1996](https://github.com/Connor1996)
- 添加 `Max gap of safe-ts``Min safe ts region` 监控项以及 `tikv-ctl get_region_read_progress` 命令,用于更好地观测和诊断 resolved-ts 和 safe-ts 的状态 [#15082](https://github.com/tikv/tikv/issues/15082) @[ekexium](https://github.com/ekexium)
- 添加 `Max gap of safe-ts``Min safe ts region` 监控项以及 `tikv-ctl get-region-read-progress` 命令,用于更好地观测和诊断 resolved-ts 和 safe-ts 的状态 [#15082](https://github.com/tikv/tikv/issues/15082) @[ekexium](https://github.com/ekexium)
- 在 TiKV 中暴露部分 RocksDB 配置,允许用户禁用 TTL 和定期数据整理等特性 [#14873](https://github.com/tikv/tikv/issues/14873) @[LykxSassinator](https://github.com/LykxSassinator)
- 新增 PD Client 连接重试过程中的 backoff 机制。异常错误重试期间,逐步增加重试时间间隔,减小 PD 压力 [#15428](https://github.com/tikv/tikv/issues/15428) @[nolouch](https://github.com/nolouch)
- 避免写 Titan manifest 文件时持有锁导致影响其他线程 [#15351](https://github.com/tikv/tikv/issues/15351) @[Connor1996](https://github.com/Connor1996)
Expand Down
2 changes: 1 addition & 1 deletion releases/release-7.3.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ v7.3.0 引入了以下主要功能。[功能详情](#功能详情)中列出的

+ TiKV

- 添加 `Max gap of safe-ts``Min safe ts region` 监控项以及 `tikv-ctl get_region_read_progress` 命令,用于更好地观测和诊断 resolved-ts 和 safe-ts 的状态 [#15082](https://github.com/tikv/tikv/issues/15082) @[ekexium](https://github.com/ekexium)
- 添加 `Max gap of safe-ts``Min safe ts region` 监控项以及 `tikv-ctl get-region-read-progress` 命令,用于更好地观测和诊断 resolved-ts 和 safe-ts 的状态 [#15082](https://github.com/tikv/tikv/issues/15082) @[ekexium](https://github.com/ekexium)

+ PD

Expand Down
2 changes: 2 additions & 0 deletions stale-read.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ advance-ts-interval = "20s" # 默认为 20 秒,可适当调小该值以加快
>
> 调小该参数会增加 TiKV CPU 使用率和各节点之间的流量。
关于 Resolved TS 的内部原理和诊断方法,请参阅[理解 TiKV 中的 Stale Read 和 safe-ts](/troubleshoot-stale-read.md)

## 限制

当对表的 Stale Read 查询下推到 TiFlash 时,如果该表在 Stale Read 所指定的读取时间戳之后执行过 DDL 操作,此查询将会报错。原因是 TiFlash 只支持从最新的表结构读取数据。
Expand Down
2 changes: 0 additions & 2 deletions ticdc/ticdc-bidirectional-replication.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ TiCDC 复制功能只会将指定时间点之后的增量变更复制到下游
bdr-mode = true
```

5. (可选)如果需要追踪数据写入源,可以使用 TiDB 系统变量 [`tidb_source_id`](/system-variables.md#tidb_source_id-从-v650-版本开始引入) 为集群设置不同的数据源 ID。

这样,以上搭建好的集群即可对数据进行双向复制。

## 执行 DDL
Expand Down
37 changes: 37 additions & 0 deletions tikv-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -667,3 +667,40 @@ corruption analysis has completed
+ 在 `sst meta` 输出部分,`14` 表示 SST 文件号,`552997` 表示文件大小,紧随其后的是最小和最大的序列号 (seq) 等其它元信息。
+ `overlap region` 部分为损坏 SST 文件所在 Region 的信息。该信息是从 PD 组件获取的。
+ `suggested operations` 部分为你清理损坏的 SST 文件提供建议操作。你可以参考这些建议的命令,清理文件,并重新启动该 TiKV 实例。
### 获取一个 Region 的 `RegionReadProgress` 状态
从 v6.5.4 和 v7.3.0 开始,TiKV 引入 `get-region-read-progress` 子命令,用于获取 resolver 和 `RegionReadProgress` 的最新状态。你需要指定一个 Region ID 和一个 TiKV,这可以从 Grafana(`Min Resolved TS Region` 和 `Min Safe TS Region`)或 `DataIsNotReady` 日志中获得。
- `--log`(可选):如果指定,TiKV 会在 `INFO` 日志级别下记录该 TiKV 中 Region 的 resolver 中最小的锁 `start_ts`。该选项有助于提前识别可能阻塞 resolved-ts 的锁。
- `--min-start-ts`(可选):如果指定,TiKV 会在日志中过滤掉 `start_ts` 小于该值的锁。你可以使用该选项指定一个感兴趣的事务,以便在日志中记录。默认值为 `0`,表示不过滤。
下面是一个使用示例:
```
./tikv-ctl --host 127.0.0.1:20160 get-region-read-progress -r 14 --log --min-start-ts 0
```
输出结果如下:
```
Region read progress:
exist: true,
safe_ts: 0,
applied_index: 92,
pending front item (oldest) ts: 0,
pending front item (oldest) applied index: 0,
pending back item (latest) ts: 0,
pending back item (latest) applied index: 0,
paused: false,
Resolver:
exist: true,
resolved_ts: 0,
tracked index: 92,
number of locks: 0,
number of transactions: 0,
stopped: false,
```
该子命令有助于诊断与 Stale Read 和 safe-ts 相关的问题。详情请参阅[理解 TiKV 中的 Stale Read 和 safe-ts](/troubleshoot-stale-read.md)。
Loading

0 comments on commit f5b86ac

Please sign in to comment.