Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add persistent statements summary #12677

Merged
merged 13 commits into from
Feb 10, 2023
31 changes: 29 additions & 2 deletions statement-summary-tables.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,36 @@ select * from information_schema.statements_summary_evicted;

## 目前的限制

Statement summary tables 现在还存在以下限制:
由于 statement summary tables 默认都存储在内存中,TiDB server 重启后,statement summary 会全部丢失。

- TiDB server 重启后以上 4 张表的 statement summary 会全部丢失。因为 statement summary tables 全部都是内存表,不会持久化数据,所以一旦 server 被重启,statement summary 随之丢失。
为解决该问题,TiDB v6.6.0 实验性地引入了 [statement summary 持久化](#持久化-statements-summary)功能,该功能默认未关闭。开启该功能后,历史数据不再存储在内存内,而是直接写入磁盘,TiDB server 重启后,历史数据也依然可用。
shichun-0415 marked this conversation as resolved.
Show resolved Hide resolved

## 持久化 statements summary

> **警告:**
>
> statements summary 持久化目前为实验特性,不建议在生产环境中使用。该功能可能会在未事先通知的情况下发生变化或删除。如果发现 bug,请在 GitHub 上提 [issue](https://github.com/pingcap/tidb/issues) 反馈。

如[目前的限制](#目前的限制)一节所描述,默认情况下 statements summary 只在内存中维护,一旦 TiDB server 发生重启,所有 statements summary 数据都会丢失。自 v6.6.0 起,TiDB 实验性地提供了配置项 [`tidb_stmt_summary_enable_persistent`](/tidb-configuration-file.md#tidb_stmt_summary_enable_persistent-从-v660-版本开始引入) 来允许用户控制是否开启 statements summary 持久化。

如果要开启 statements summary 持久化,可以在 TiDB 配置文件中添加如下配置:

```toml
[instance]
tidb_stmt_summary_enable_persistent = true
# 以下配置为默认值,可根据需求调整。
# tidb_stmt_summary_filename = "tidb-statements.log"
# tidb_stmt_summary_file_max_days = 3
# tidb_stmt_summary_file_max_size = 64 # MiB
# tidb_stmt_summary_file_max_backups = 0
```

开启 statements summary 持久化后,内存中只维护当前的实时数据,不再维护历史数据。历史数据生成后直接被写入磁盘文件,写入周期参考[参数配置](#参数配置)一节所描述的 `tidb_stmt_summary_refresh_interval`。后续针对 `statements_summary_history` 或 `cluster_statements_summary_history` 表的查询将结合内存和磁盘两处数据返回结果。

> **注意:**
>
> - 当开启持久化后,由于不再于内存中维护历史数据,因此[参数配置](#参数配置)一节所描述的 `tidb_stmt_summary_history_size` 将不再生效,而是由 [`tidb_stmt_summary_file_max_days`](/tidb-configuration-file.md#tidb_stmt_summary_file_max_days-从-v660-版本开始引入)、[`tidb_stmt_summary_file_max_size`](/tidb-configuration-file.md#tidb_stmt_summary_file_max_size-从-v660-版本开始引入) 和 [`tidb_stmt_summary_file_max_backups`](/tidb-configuration-file.md#tidb_stmt_summary_file_max_backups-从-v660-版本开始引入) 这三项配置来决定历史数据在磁盘上的保留数量和时间。
> - `tidb_stmt_summary_refresh_interval` 取值越小,数据写入到磁盘就越实时,但写入磁盘的冗余数据也会随之增多。

## 排查示例

Expand Down
51 changes: 51 additions & 0 deletions tidb-configuration-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -808,6 +808,57 @@ TiDB 服务状态相关配置。
+ 该值作为系统变量 [`tidb_enable_ddl`](/system-variables.md#tidb_enable_ddl) 的初始值。
+ 在 v6.3.0 之前,该功能由配置项 `run-ddl` 进行设置。

### `tidb_stmt_summary_enable_persistent` <span class="version-mark">从 v6.6.0 版本开始引入</span>

> **警告:**
>
> statements summary 持久化目前为实验特性,不建议在生产环境中使用。该功能可能会在未事先通知的情况下发生变化或删除。如果发现 bug,请在 GitHub 上提 [issue](https://github.com/pingcap/tidb/issues) 反馈。

+ 用于控制是否开启 statements summary 持久化。
+ 默认值:false
+ 详情参考[持久化 statements summary](/statement-summary-tables.md#持久化-statements-summary)。

### `tidb_stmt_summary_filename` <span class="version-mark">从 v6.6.0 版本开始引入</span>

> **警告:**
>
> statements summary 持久化目前为实验特性,不建议在生产环境中使用。该功能可能会在未事先通知的情况下发生变化或删除。如果发现 bug,请在 GitHub 上提 [issue](https://github.com/pingcap/tidb/issues) 反馈。

+ 当开启了 statements summary 持久化时,该配置用于指定持久化数据所写入的文件。
+ 默认值:"tidb-statements.log"

### `tidb_stmt_summary_file_max_days` <span class="version-mark">从 v6.6.0 版本开始引入</span>

> **警告:**
>
> statements summary 持久化目前为实验特性,不建议在生产环境中使用。该功能可能会在未事先通知的情况下发生变化或删除。如果发现 bug,请在 GitHub 上提 [issue](https://github.com/pingcap/tidb/issues) 反馈。

+ 当开启了 statements summary 持久化时,该配置用于指定持久化数据文件所保留的最大天数。
+ 默认值:3
shichun-0415 marked this conversation as resolved.
Show resolved Hide resolved
+ 单位:天
+ 可结合数据保留时长需求与磁盘空间占用适当调整。

### `tidb_stmt_summary_file_max_size` <span class="version-mark">从 v6.6.0 版本开始引入</span>

> **警告:**
>
> statements summary 持久化目前为实验特性,不建议在生产环境中使用。该功能可能会在未事先通知的情况下发生变化或删除。如果发现 bug,请在 GitHub 上提 [issue](https://github.com/pingcap/tidb/issues) 反馈。

+ 当开启了 statements summary 持久化时,该配置用于限制持久化数据单个文件的大小。
+ 默认值:64
shichun-0415 marked this conversation as resolved.
Show resolved Hide resolved
+ 单位:MiB
+ 可结合数据保留时长需求与磁盘空间占用适当调整。

### `tidb_stmt_summary_file_max_backups` <span class="version-mark">从 v6.6.0 版本开始引入</span>

> **警告:**
>
> statements summary 持久化目前为实验特性,不建议在生产环境中使用。该功能可能会在未事先通知的情况下发生变化或删除。如果发现 bug,请在 GitHub 上提 [issue](https://github.com/pingcap/tidb/issues) 反馈。

+ 当开启了 statements summary 持久化时,该配置用于限制持久化数据文件最大数量,`0` 表示不限制。
+ 默认值:0
+ 可结合数据保留时长需求与磁盘空间占用适当调整。

## proxy-protocol

PROXY 协议相关的配置项。
Expand Down