From 4ff718f9a80391acacdc41faec8ed8647828ca61 Mon Sep 17 00:00:00 2001 From: qiancai Date: Fri, 27 Mar 2026 19:33:34 +0800 Subject: [PATCH 1/8] translate https://github.com/pingcap/docs/pull/22624 --- .../information-schema-analyze-status.md | 3 ++- statistics.md | 21 ++++++++----------- system-variables.md | 4 ++++ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/information-schema/information-schema-analyze-status.md b/information-schema/information-schema-analyze-status.md index 2634c0fbbaaa..7c131d18a809 100644 --- a/information-schema/information-schema-analyze-status.md +++ b/information-schema/information-schema-analyze-status.md @@ -77,4 +77,5 @@ SELECT * FROM information_schema.analyze_status; ## 另请参阅 - [`ANALYZE TABLE`](/sql-statements/sql-statement-analyze-table.md) -- [`SHOW ANALYZE STATUS`](/sql-statements/sql-statement-show-analyze-status.md) \ No newline at end of file +- [`SHOW ANALYZE STATUS`](/sql-statements/sql-statement-show-analyze-status.md) + diff --git a/statistics.md b/statistics.md index 7ad3e745cb4b..eebee0f3dec6 100644 --- a/statistics.md +++ b/statistics.md @@ -320,6 +320,10 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana ## 统计信息版本 +> **警告:** +> +> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已弃用,并将在未来的版本中移除。建议你使用统计信息版本 2 (`tidb_analyze_version = 2`) 并将现有已分析对象迁移至版本 2。 + 系统变量 [`tidb_analyze_version`](/system-variables.md#tidb_analyze_version-从-v510-版本开始引入) 用于控制 TiDB 收集统计信息的行为。目前 TiDB 支持两个版本的统计信息,即 `tidb_analyze_version = 1` 和 `tidb_analyze_version = 2`。 - 从 v5.3.0 开始,变量 `tidb_analyze_version` 的默认值从 `1` 变为了 `2`。 @@ -341,11 +345,11 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana ### 切换统计信息版本 -建议确保所有表、索引(和分区)使用相同版本的统计信息收集功能。推荐使用 Version 2,但不建议在没有正当理由(例如使用中的版本出现问题)的情况下切换版本。版本之间的切换可能需要一段时间,在此期间可能没有统计信息,直到所有表都使用了新版本进行统计。如果没有统计信息,可能会影响优化器的计划选择。 +建议所有表、索引和分区使用相同的统计信息版本。如果你的集群仍在使用统计信息版本 1,请尽快迁移到统计信息版本 2。在为某个对象收集版本 2 的统计信息之前,TiDB 会继续使用其现有的版本 1 统计信息。 -切换版本的正当理由可能包括:使用 Version 1 在收集 Count-Min Sketch 统计信息时,由于哈希冲突导致等值查询或 `IN` 查询谓词估算不准确。此时,你可以参考 [Count-Min Sketch](#count-min-sketch) 小节中描述的解决方案,或者设置 `tidb_analyze_version = 2` 并对所有对象重新运行 `ANALYZE`。在 Version 2 的早期阶段,执行 `ANALYZE` 后有内存溢出的风险,现在这个问题已经解决,但最初的解决方案是设置 `tidb_analyze_version = 1` 并对所有对象重新运行 `ANALYZE`。 +迁移的一个主要原因是,版本 1 可能对等值/IN 谓词产生不准确的估算,因为 Count-Min sketch 可能存在哈希冲突。更多信息,请参阅 [Count-Min Sketch](#count-min-sketch)。为避免此问题,请设置 `tidb_analyze_version = 2` 并对所有对象重新运行 `ANALYZE`。 -要为切换统计信息版本做好 `ANALYZE` 准备,请根据情况进行以下操作: +要为从统计信息版本 1 迁移到版本 2 做好 `ANALYZE` 准备,请根据情况进行以下操作: - 如果 `ANALYZE` 语句是手动执行的,请手动统计每张需要统计的表: @@ -353,17 +357,10 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana SELECT DISTINCT(CONCAT('ANALYZE TABLE ', table_schema, '.', table_name, ';')) FROM information_schema.tables JOIN mysql.stats_histograms ON table_id = tidb_table_id - WHERE stats_ver = 2; + WHERE stats_ver = 1; ``` -- 如果 `ANALYZE` 语句是由 TiDB 自动执行的(当开启自动更新统计信息时),请执行以下语句生成 [`DROP STATS`](/sql-statements/sql-statement-drop-stats.md) 语句: - - ```sql - SELECT DISTINCT(CONCAT('DROP STATS ', table_schema, '.', table_name, ';')) - FROM information_schema.tables JOIN mysql.stats_histograms - ON table_id = tidb_table_id - WHERE stats_ver = 2; - ``` +- 如果 `ANALYZE` 语句是由 TiDB 自动执行的(当开启自动更新统计信息时),在你设置 `tidb_analyze_version = 2` 后,TiDB 会通过后续的自动分析逐步将统计信息刷新至版本 2。在为某个对象收集版本 2 的统计信息之前,TiDB 可以继续使用其现有的版本 1 统计信息。若要加速重要对象的迁移,请手动对其运行 `ANALYZE`。 - 如果上一条语句的返回结果太长,不方便复制粘贴,可以将结果导出到临时文件后,再执行: diff --git a/system-variables.md b/system-variables.md index 59808bbbf816..0584119f5573 100644 --- a/system-variables.md +++ b/system-variables.md @@ -987,6 +987,10 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数 ### `tidb_analyze_version` 从 v5.1.0 版本开始引入 +> **警告:** +> +> 从 v8.5.6 版本开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已被弃用,并将在未来的版本中移除。建议使用 `tidb_analyze_version = 2`。 + - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 - 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否 From c4006427c41267776074f1239f39daa1565ddc9e Mon Sep 17 00:00:00 2001 From: qiancai Date: Sat, 28 Mar 2026 10:10:43 +0800 Subject: [PATCH 2/8] Update statistics.md --- statistics.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/statistics.md b/statistics.md index eebee0f3dec6..e0a458635011 100644 --- a/statistics.md +++ b/statistics.md @@ -322,7 +322,7 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana > **警告:** > -> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已弃用,并将在未来的版本中移除。建议你使用统计信息版本 2 (`tidb_analyze_version = 2`) 并将现有已分析对象迁移至版本 2。 +> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已废弃,并将在未来的版本中移除。建议你使用统计信息版本 2 (`tidb_analyze_version = 2`) 并将现有已分析对象迁移至版本 2。 系统变量 [`tidb_analyze_version`](/system-variables.md#tidb_analyze_version-从-v510-版本开始引入) 用于控制 TiDB 收集统计信息的行为。目前 TiDB 支持两个版本的统计信息,即 `tidb_analyze_version = 1` 和 `tidb_analyze_version = 2`。 @@ -330,7 +330,7 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana - 如果从 v5.3.0 之前版本的集群升级至 v5.3.0 或之后的版本,该变量的默认值不会发生变化。 -更推荐选择 Version 2。Version 2 将继续增强,并最终完全取代 Version 1。与 Version 1 相比,Version 2 提高了大数据量场景下多项统计信息收集的准确性。此外,Version 2 在进行谓词选择率估算时不再需要收集 Count-Min Sketch 统计信息,并支持仅对选定列进行自动收集(参见[收集部分列的统计信息](#收集部分列的统计信息)),从而提高了收集性能。 +推荐使用统计信息版本 2 。与版本 1 相比,版本 2 提高了大数据量场景下多项统计信息的准确性。此外,版本 2 在进行谓词选择率估算时不再需要收集 Count-Min Sketch 统计信息,从而提高了收集性能。 以下表格列出了两个统计信息版本为优化器估算收集的信息: @@ -345,11 +345,11 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana ### 切换统计信息版本 -建议所有表、索引和分区使用相同的统计信息版本。如果你的集群仍在使用统计信息版本 1,请尽快迁移到统计信息版本 2。在为某个对象收集版本 2 的统计信息之前,TiDB 会继续使用其现有的版本 1 统计信息。 +建议所有表、索引和分区使用相同的统计信息版本。如果你的集群仍在使用统计信息版本 1,请尽快迁移至统计信息版本 2。在为某个对象(例如表、索引或分区)收集到 Version 2 的统计信息之前,TiDB 会继续使用该对象现有的 Version 1 统计信息。 迁移的一个主要原因是,版本 1 可能对等值/IN 谓词产生不准确的估算,因为 Count-Min sketch 可能存在哈希冲突。更多信息,请参阅 [Count-Min Sketch](#count-min-sketch)。为避免此问题,请设置 `tidb_analyze_version = 2` 并对所有对象重新运行 `ANALYZE`。 -要为从统计信息版本 1 迁移到版本 2 做好 `ANALYZE` 准备,请根据情况进行以下操作: +要为从统计信息版本 1 迁移到统计信息版本 2 做好 `ANALYZE` 准备,请根据情况进行以下操作: - 如果 `ANALYZE` 语句是手动执行的,请手动统计每张需要统计的表: @@ -361,6 +361,7 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana ``` - 如果 `ANALYZE` 语句是由 TiDB 自动执行的(当开启自动更新统计信息时),在你设置 `tidb_analyze_version = 2` 后,TiDB 会通过后续的自动分析逐步将统计信息刷新至版本 2。在为某个对象收集版本 2 的统计信息之前,TiDB 可以继续使用其现有的版本 1 统计信息。若要加速重要对象的迁移,请手动对其运行 `ANALYZE`。 +- 如果 `ANALYZE` 语句是由 TiDB 自动执行的(当开启自动更新统计信息时),在你设置 `tidb_analyze_version = 2` 后,TiDB 会通过后续的 Auto Analyze 逐步将统计信息刷新至版本 2。在为某个对象收集到版本 2 的统计信息之前,TiDB 可以继续使用其现有的版本 1 统计信息。若要加速重要对象的迁移,请手动对其运行 `ANALYZE`。 - 如果上一条语句的返回结果太长,不方便复制粘贴,可以将结果导出到临时文件后,再执行: From b1e8319b6a8541f5aca7504a97c650d53f5a7d37 Mon Sep 17 00:00:00 2001 From: qiancai Date: Sat, 28 Mar 2026 10:10:46 +0800 Subject: [PATCH 3/8] Update statistics.md --- statistics.md | 1 - 1 file changed, 1 deletion(-) diff --git a/statistics.md b/statistics.md index e0a458635011..c4a1bb6d723f 100644 --- a/statistics.md +++ b/statistics.md @@ -360,7 +360,6 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana WHERE stats_ver = 1; ``` -- 如果 `ANALYZE` 语句是由 TiDB 自动执行的(当开启自动更新统计信息时),在你设置 `tidb_analyze_version = 2` 后,TiDB 会通过后续的自动分析逐步将统计信息刷新至版本 2。在为某个对象收集版本 2 的统计信息之前,TiDB 可以继续使用其现有的版本 1 统计信息。若要加速重要对象的迁移,请手动对其运行 `ANALYZE`。 - 如果 `ANALYZE` 语句是由 TiDB 自动执行的(当开启自动更新统计信息时),在你设置 `tidb_analyze_version = 2` 后,TiDB 会通过后续的 Auto Analyze 逐步将统计信息刷新至版本 2。在为某个对象收集到版本 2 的统计信息之前,TiDB 可以继续使用其现有的版本 1 统计信息。若要加速重要对象的迁移,请手动对其运行 `ANALYZE`。 - 如果上一条语句的返回结果太长,不方便复制粘贴,可以将结果导出到临时文件后,再执行: From 79e1cc52ce9ebc91a31abb4757fbb0e672a7dca9 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Sat, 28 Mar 2026 10:12:12 +0800 Subject: [PATCH 4/8] Discard changes to information-schema/information-schema-analyze-status.md --- information-schema/information-schema-analyze-status.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/information-schema/information-schema-analyze-status.md b/information-schema/information-schema-analyze-status.md index 7c131d18a809..2634c0fbbaaa 100644 --- a/information-schema/information-schema-analyze-status.md +++ b/information-schema/information-schema-analyze-status.md @@ -77,5 +77,4 @@ SELECT * FROM information_schema.analyze_status; ## 另请参阅 - [`ANALYZE TABLE`](/sql-statements/sql-statement-analyze-table.md) -- [`SHOW ANALYZE STATUS`](/sql-statements/sql-statement-show-analyze-status.md) - +- [`SHOW ANALYZE STATUS`](/sql-statements/sql-statement-show-analyze-status.md) \ No newline at end of file From c9a5602a488c25484552a82b8604ddf169519890 Mon Sep 17 00:00:00 2001 From: qiancai Date: Sat, 28 Mar 2026 10:16:05 +0800 Subject: [PATCH 5/8] Update statistics.md --- statistics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/statistics.md b/statistics.md index c4a1bb6d723f..2d35941fefca 100644 --- a/statistics.md +++ b/statistics.md @@ -322,7 +322,7 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana > **警告:** > -> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已废弃,并将在未来的版本中移除。建议你使用统计信息版本 2 (`tidb_analyze_version = 2`) 并将现有已分析对象迁移至版本 2。 +> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已废弃,并将在未来的版本中移除。建议你使用统计信息版本 2 (`tidb_analyze_version = 2`),并[将目前已有统计信息版本 1 的对象迁移至版本 2](/statistics.md#切换统计信息版本)。 系统变量 [`tidb_analyze_version`](/system-variables.md#tidb_analyze_version-从-v510-版本开始引入) 用于控制 TiDB 收集统计信息的行为。目前 TiDB 支持两个版本的统计信息,即 `tidb_analyze_version = 1` 和 `tidb_analyze_version = 2`。 From 00090eae2aab504b3a78421d2bd6a1f65d44cf53 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Sat, 28 Mar 2026 10:20:13 +0800 Subject: [PATCH 6/8] Update statistics.md --- statistics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/statistics.md b/statistics.md index 2d35941fefca..d8710ee8e59f 100644 --- a/statistics.md +++ b/statistics.md @@ -322,7 +322,7 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana > **警告:** > -> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已废弃,并将在未来的版本中移除。建议你使用统计信息版本 2 (`tidb_analyze_version = 2`),并[将目前已有统计信息版本 1 的对象迁移至版本 2](/statistics.md#切换统计信息版本)。 +> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已废弃,并将在未来的版本中移除。建议你使用统计信息版本 2 (`tidb_analyze_version = 2`),并[将目前已有统计信息版本 1 的对象迁移至版本 2](#切换统计信息版本)。 系统变量 [`tidb_analyze_version`](/system-variables.md#tidb_analyze_version-从-v510-版本开始引入) 用于控制 TiDB 收集统计信息的行为。目前 TiDB 支持两个版本的统计信息,即 `tidb_analyze_version = 1` 和 `tidb_analyze_version = 2`。 From dc9737bcb66132214b5d75dd7eea76bf766f6035 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Sat, 28 Mar 2026 10:21:40 +0800 Subject: [PATCH 7/8] Update system-variables.md --- system-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-variables.md b/system-variables.md index 0584119f5573..1835290d3b46 100644 --- a/system-variables.md +++ b/system-variables.md @@ -989,7 +989,7 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数 > **警告:** > -> 从 v8.5.6 版本开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已被弃用,并将在未来的版本中移除。建议使用 `tidb_analyze_version = 2`。 +> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已被弃用,并将在未来的版本中移除。建议使用 `tidb_analyze_version = 2`。 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 From d7c4de08817f2d39b82f1aea0939dc81d5687128 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Sat, 28 Mar 2026 10:22:02 +0800 Subject: [PATCH 8/8] Update system-variables.md --- system-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-variables.md b/system-variables.md index 1835290d3b46..698becb55529 100644 --- a/system-variables.md +++ b/system-variables.md @@ -989,7 +989,7 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数 > **警告:** > -> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已被弃用,并将在未来的版本中移除。建议使用 `tidb_analyze_version = 2`。 +> 从 v8.5.6 开始,统计信息版本 1 (`tidb_analyze_version = 1`) 已废弃,并将在未来的版本中移除。建议使用 `tidb_analyze_version = 2`。 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是