Skip to content

Commit 6fe87f9

Browse files
Auto-sync: Update Chinese docs from English PR
Synced from: pingcap/docs#22624 Target PR: pingcap#21476 AI Provider: gemini Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 1cdabab commit 6fe87f9

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

information-schema/information-schema-analyze-status.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,5 @@ SELECT * FROM information_schema.analyze_status;
7777
## 另请参阅
7878

7979
- [`ANALYZE TABLE`](/sql-statements/sql-statement-analyze-table.md)
80-
- [`SHOW ANALYZE STATUS`](/sql-statements/sql-statement-show-analyze-status.md)
80+
- [`SHOW ANALYZE STATUS`](/sql-statements/sql-statement-show-analyze-status.md)
81+

statistics.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -320,13 +320,15 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana
320320

321321
## 统计信息版本
322322

323-
系统变量 [`tidb_analyze_version`](/system-variables.md#tidb_analyze_version-从-v510-版本开始引入) 用于控制 TiDB 收集统计信息的行为。目前 TiDB 支持两个版本的统计信息,即 `tidb_analyze_version = 1` 和 `tidb_analyze_version = 2`。
323+
> **警告:**
324+
>v8.5.6 起,统计信息版本 1 (`tidb_analyze_version = 1`) 已弃用,并将在未来版本中移除。建议使用统计信息版本 2 (`tidb_analyze_version = 2`),并将现有的已分析对象迁移至版本 2
324325

325-
-v5.3.0 开始,变量 `tidb_analyze_version` 的默认值从 `1` 变为了 `2`
326+
系统变量 [`tidb_analyze_version`](/system-variables.md#tidb_analyze_version-从-v510-版本开始引入) 用于控制 TiDB 收集统计信息的行为。目前 TiDB 支持两个统计信息版本:`tidb_analyze_version = 1` 和 `tidb_analyze_version = 2`。
326327
- 如果从 v5.3.0 之前版本的集群升级至 v5.3.0 或之后的版本,该变量的默认值不会发生变化。
327328
<!-- - TiDB Cloud 中,从 v6.5.0 开始,该变量的默认值从 `1` 变为了 `2`。-->
328329

329330
更推荐选择 Version 2。Version 2 将继续增强,并最终完全取代 Version 1。与 Version 1 相比,Version 2 提高了大数据量场景下多项统计信息收集的准确性。此外,Version 2 在进行谓词选择率估算时不再需要收集 Count-Min Sketch 统计信息,并支持仅对选定列进行自动收集(参见[收集部分列的统计信息](#收集部分列的统计信息)),从而提高了收集性能。
331+
- If your cluster is upgraded from an earlier version, the default value of `tidb_analyze_version` does not change after the upgrade.
330332

331333
以下表格列出了两个统计信息版本为优化器估算收集的信息:
332334

@@ -343,20 +345,20 @@ SHOW COLUMN_STATS_USAGE WHERE db_name = 'test' AND table_name = 't' AND last_ana
343345

344346
建议确保所有表、索引(和分区)使用相同版本的统计信息收集功能。推荐使用 Version 2,但不建议在没有正当理由(例如使用中的版本出现问题)的情况下切换版本。版本之间的切换可能需要一段时间,在此期间可能没有统计信息,直到所有表都使用了新版本进行统计。如果没有统计信息,可能会影响优化器的计划选择。
345347

346-
切换版本的正当理由可能包括:使用 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`。
348+
One major reason to migrate is that Version 1 might produce inaccurate estimates for equal/IN predicates because the Count-Min sketch can have hash collisions. For more information, see [Count-Min Sketch](#count-min-sketch). To avoid this issue, set `tidb_analyze_version = 2` and rerun `ANALYZE` on all objects.
347349

348-
要为切换统计信息版本做好 `ANALYZE` 准备,请根据情况进行以下操作:
350+
To prepare `ANALYZE` for migrating from Statistics Version 1 to Statistics Version 2:
349351

350-
- 如果 `ANALYZE` 语句是手动执行的,请手动统计每张需要统计的表:
352+
- If the `ANALYZE` statement is executed manually, manually analyze every table to be analyzed.
351353

352354
```sql
353355
SELECT DISTINCT(CONCAT('ANALYZE TABLE ', table_schema, '.', table_name, ';'))
354356
FROM information_schema.tables JOIN mysql.stats_histograms
355357
ON table_id = tidb_table_id
356-
WHERE stats_ver = 2;
358+
WHERE stats_ver = 1;
357359
```
358360

359-
- 如果 `ANALYZE` 语句是由 TiDB 自动执行的(当开启自动更新统计信息时),请执行以下语句生成 [`DROP STATS`](/sql-statements/sql-statement-drop-stats.md) 语句:
361+
- If TiDB automatically executes the `ANALYZE` statement because the auto-analysis has been enabled, after you set `tidb_analyze_version = 2`, TiDB gradually refreshes statistics to Version 2 through subsequent auto-analysis. Before Version 2 statistics are collected for an object, TiDB can continue to use its existing Version 1 statistics. To speed up the migration for important objects, run `ANALYZE` on them manually.
360362

361363
```sql
362364
SELECT DISTINCT(CONCAT('DROP STATS ', table_schema, '.', table_name, ';'))

system-variables.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,18 @@ mysql> SHOW CREATE TABLE t;
10181018
`e` longblob DEFAULT NULL
10191019
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin |
10201020
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1021-
1 row in set (0.00 sec)
1021+
### `tidb_analyze_version` <span class="version-mark">从 v5.1.0 版本开始引入</span>
1022+
>v8.5.6 版本开始,统计信息 V1 (`tidb_analyze_version = 1`) 已弃用,并将在未来版本中移除。建议使用 `tidb_analyze_version = 2`
1023+
1024+
- 作用域:SESSION | GLOBAL
1025+
- 是否持久化到集群:是
1026+
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
1027+
- 类型:整数型
1028+
- 默认值:`2`
1029+
- 范围:`[1, 2]`
1030+
- 这个变量用于控制 TiDB 收集统计信息的行为。
1031+
-v5.3.0 及之后的版本中,该变量的默认值为 `2`,具体可参照[常规统计信息](/statistics.md)文档。如果从 v5.3.0 之前版本的集群升级至 v5.3.0 及之后的版本,`tidb_analyze_version` 的默认值不发生变化。
1032+
10221033
10231034
mysql> SELECT @@tidb_analyze_skip_column_types;
10241035
+----------------------------------+

0 commit comments

Comments
 (0)