diff --git a/dev/reference/configuration/tidb-server/configuration-file.md b/dev/reference/configuration/tidb-server/configuration-file.md index fc5b3c48ef12..9640f58e1b95 100644 --- a/dev/reference/configuration/tidb-server/configuration-file.md +++ b/dev/reference/configuration/tidb-server/configuration-file.md @@ -224,12 +224,18 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ ### `stats-lease` -+ TiDB 重载统计信息,更新表行数,检查是否需要自动 analyze 以及加载列的统计信息的时间间隔。 ++ TiDB 重载统计信息,更新表行数,检查是否需要自动 analyze,利用 feedback 更新统计信息以及加载列的统计信息的时间间隔。 + 默认值:3s - 每隔 `stats-lease` 时间,TiDB 会检查统计信息是否有更新,如果有会将其更新到内存中 - - 每隔 `5 * stats-lease` 时间,TiDB 会将 DML 产生的总行数以及修改的行数变化持久化下来 + - 每隔 `20 * stats-lease` 时间,TiDB 会将 DML 产生的总行数以及修改的行数变化更新到系统表中 - 每隔 `stats-lease` 时间,TiDB 会检查是否有表或者索引需要自动 analyze - 每隔 `stats-lease` 时间,TiDB 会检查是否有列的统计信息需要被加载到内存中 + - 每隔 `200 * stats-lease` 时间,TiDB 会将内存中缓存的 feedback 写入系统表中 + - 每隔 `5 * stats-lease` 时间,TiDB 会读取系统表中的 feedback,更新内存中缓存的统计信息 ++ 当 `stats-lease` 为 0 时,TiDB 会以 3s 的时间间隔周期性的读取系统表中的统计信息并更新内存中缓存的统计信息。但不会自动修改统计信息相关系统表,具体来说,TiDB 不再自动修改这些表: + - `mysql.stats_meta`:TiDB 不再自动记录事务中对某张表的修改行数,也不会更新到这个系统表中 + - `mysql.stats_histograms`/`mysql.stats_buckets` 和 `mysql.stats_top_n`:TiDB 不再自动 analyze 和主动更新统计信息 + - `mysql.stats_feedback`:TiDB 不再根据被查询的数据反馈的部分统计信息更新表和索引的统计信息 ### `run-auto-analyze` @@ -239,7 +245,7 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ ### `feedback-probability` + TiDB 对查询收集统计信息反馈的概率。 -+ 默认值:0.0 ++ 默认值:0.05 + 对于每一个查询,TiDB 会以 `feedback-probability` 的概率收集查询的反馈,用于更新统计信息。 ### `query-feedback-limit` diff --git a/v2.1/reference/configuration/tidb-server/configuration-file.md b/v2.1/reference/configuration/tidb-server/configuration-file.md index bfbb04b8812d..abbccaeca09d 100644 --- a/v2.1/reference/configuration/tidb-server/configuration-file.md +++ b/v2.1/reference/configuration/tidb-server/configuration-file.md @@ -3,10 +3,10 @@ title: TiDB 配置文件描述 category: reference --- -# TiDB 配置文件描述 - +# TiDB 配置文件描述 + TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/config.toml.example](https://github.com/pingcap/tidb/blob/master/config/config.toml.example) 找到默认的配置文件,重命名为 config.toml 即可。 本文档只阐述未包含在命令行参数中的参数,命令行参数参见[这里](/reference/configuration/tidb-server/configuration.md)。 @@ -174,12 +174,28 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ ### `stats-lease` -+ TiDB 重载统计信息,更新表行数,检查是否需要自动 analyze 以及加载列的统计信息的时间间隔。 ++ TiDB 重载统计信息,更新表行数,检查是否需要自动 analyze,利用 feedback 更新统计信息以及加载列的统计信息的时间间隔。 + 默认:3s - 每隔 `stats-lease` 时间,TiDB 会检查统计信息是否有更新,如果有会将其更新到内存中 - - 每隔 `5 * stats-lease` 时间,TiDB 会将 DML 产生的总行数以及修改的行数变化持久化下来 + - 每隔 `20 * stats-lease` 时间,TiDB 会将 DML 产生的总行数以及修改的行数变化持久化下来 - 每隔 `stats-lease` 时间,TiDB 会检查是否有表或者索引需要自动 analyze - 每隔 `stats-lease` 时间,TiDB 会检查是否有列的统计信息需要被加载到内存中 + - 每隔 `200 * stats-lease` 时间,TiDB 会将内存中缓存的 feedback 写入系统表中 + - 每隔 `5 * stats-lease` 时间,TiDB 会读取系统表中的 feedback,更新统计信息 ++ 当 `stats-lease` 为 0 时, 上述所有操作都不会再进行。 + +### `enable-update-stats` + +> **注意:** +> +> 该配置项由 2.1.13 版本中引入,仅在 TiDB 版本大于等于 v2.1.13 的 2.1 版本中支持。 + ++ TiDB 是否做统计信息更新相关操作,例如维护总行数和修改行数,自动 analyze 以及 feedback 等。 ++ 默认:true ++ 由于统计信息更新操作的周期由 `stats-lease` 决定,因此该参数只在 `stats-lease` 不为 0 的情况下生效。当 `enable-update-stats` 为 false 时,TiDB 不再自动修改这些表: + - `mysql.stats_meta`:TiDB 不再自动记录事务中对某张表的修改行数,也不会更新到这个系统表中 + - `mysql.stats_histograms` 和 `mysql.stats_buckets`:TiDB 不再自动 analyze 和主动更新统计信息 + - `mysql.stats_feedback`:TiDB 不再根据被查询的数据反馈的部分统计信息更新表和索引的统计信息 ### `run-auto-analyze` @@ -189,7 +205,7 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ ### `feedback-probability` + TiDB 对查询收集统计信息反馈的概率。 -+ 默认:0.0 ++ 默认:0.05 + 对于每一个查询,TiDB 会以 `feedback-probability` 的概率收集查询的反馈,用于更新统计信息。 ## prepared-plan-cache diff --git a/v3.0/reference/configuration/tidb-server/configuration-file.md b/v3.0/reference/configuration/tidb-server/configuration-file.md index 0ab063648218..4abd2e4ce493 100644 --- a/v3.0/reference/configuration/tidb-server/configuration-file.md +++ b/v3.0/reference/configuration/tidb-server/configuration-file.md @@ -225,12 +225,18 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ ### `stats-lease` -+ TiDB 重载统计信息,更新表行数,检查是否需要自动 analyze 以及加载列的统计信息的时间间隔。 ++ TiDB 重载统计信息,更新表行数,检查是否需要自动 analyze,利用 feedback 更新统计信息以及加载列的统计信息的时间间隔。 + 默认值:3s - 每隔 `stats-lease` 时间,TiDB 会检查统计信息是否有更新,如果有会将其更新到内存中 - - 每隔 `5 * stats-lease` 时间,TiDB 会将 DML 产生的总行数以及修改的行数变化持久化下来 + - 每隔 `20 * stats-lease` 时间,TiDB 会将 DML 产生的总行数以及修改的行数变化更新到系统表中 - 每隔 `stats-lease` 时间,TiDB 会检查是否有表或者索引需要自动 analyze - 每隔 `stats-lease` 时间,TiDB 会检查是否有列的统计信息需要被加载到内存中 + - 每隔 `200 * stats-lease` 时间,TiDB 会将内存中缓存的 feedback 写入系统表中 + - 每隔 `5 * stats-lease` 时间,TiDB 会读取系统表中的 feedback,更新内存中缓存的统计信息 ++ 当 `stats-lease` 为 0 时,TiDB 会以 3s 的时间间隔周期性的读取系统表中的统计信息并更新内存中缓存的统计信息。但不会自动修改统计信息相关系统表,具体来说,TiDB 不再自动修改这些表: + - `mysql.stats_meta`:TiDB 不再自动记录事务中对某张表的修改行数,也不会更新到这个系统表中 + - `mysql.stats_histograms`/`mysql.stats_buckets` 和 `mysql.stats_top_n`:TiDB 不再自动 analyze 和主动更新统计信息 + - `mysql.stats_feedback`:TiDB 不再根据被查询的数据反馈的部分统计信息更新表和索引的统计信息,analyze 以及 feedback 等操作都不会再进行。 ### `run-auto-analyze` @@ -240,7 +246,7 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ ### `feedback-probability` + TiDB 对查询收集统计信息反馈的概率。 -+ 默认值:0.0 ++ 默认值:0.05 + 对于每一个查询,TiDB 会以 `feedback-probability` 的概率收集查询的反馈,用于更新统计信息。 ### `query-feedback-limit`