diff --git a/best-practices/tidb-best-practices.md b/best-practices/tidb-best-practices.md
index 839c41eb752a..f9afd8bc5adc 100644
--- a/best-practices/tidb-best-practices.md
+++ b/best-practices/tidb-best-practices.md
@@ -111,7 +111,7 @@ TiDB 支持完整的二级索引,并且是全局索引,很多查询可以通
+ 通过索引保证结果顺序
- 索引除了可以用来过滤数据之外,还能用来对数据排序,首先按照索引的顺序获取行 ID,然后再按照行 ID 的返回顺序返回行的内容,这样可以保证返回结果按照索引列有序。前面提到了扫索引和获取 Row 之间是并行 + Pipeline 模式,如果要求按照索引的顺序返回 Row,那么这两次查询之间的并发度设置的太高并不会降低延迟,所以默认的并发度比较保守。可以通过 [tidb_index_serial_scan_concurrency](/system-variables.md#tidb_index_serial_scan_concurrency) 变量进行并发度调整。
+ 索引除了可以用来过滤数据之外,还能用来对数据排序,TiDB 首先按照索引的顺序获取行 ID,然后再按照这些行 ID 的顺序返回行的内容,这样可以保证返回结果按照索引列有序。前面提到了扫索引和获取 Row 之间是并行 + Pipeline 模式,如果要求按照索引的顺序返回 Row,那么这两次查询之间的并发度设置的太高并不会降低延迟,所以默认的并发度比较保守。可以通过调整 [`tidb_executor_concurrency`](/system-variables.md#tidb_executor_concurrency-new-in-v50) 来提高并发度。
+ 逆序索引
diff --git a/sql-statements/sql-statement-show-variables.md b/sql-statements/sql-statement-show-variables.md
index 0ec537d95ae1..cdaad5baf977 100644
--- a/sql-statements/sql-statement-show-variables.md
+++ b/sql-statements/sql-statement-show-variables.md
@@ -42,7 +42,7 @@ SHOW GLOBAL VARIABLES LIKE 'tidb%';
| tidb_backoff_weight | 2 |
| tidb_batch_commit | 0 |
| tidb_batch_delete | 0 |
-| tidb_build_stats_concurrency | 4 |
+| tidb_build_stats_concurrency | 2 |
| tidb_capture_plan_baselines | off |
| tidb_check_mb4_value_in_utf8 | 1 |
| tidb_checksum_table_concurrency | 4 |
diff --git a/statistics.md b/statistics.md
index 4e76096f8fc3..a7affd0efcf8 100644
--- a/statistics.md
+++ b/statistics.md
@@ -688,23 +688,29 @@ mysql> SHOW WARNINGS;
#### `tidb_build_stats_concurrency`
-`ANALYZE` 任务在执行时会被切分成一个个小任务,每个任务只负责某一个列或者索引的统计信息收集。你可以使用 [`tidb_build_stats_concurrency`](/system-variables.md#tidb_build_stats_concurrency) 控制可以同时执行的小任务的数量,其默认值是 `2`。TiDB v7.4.0 及其之前版本中,默认值为 `4`。
+该变量控制手动收集统计信息时,构建统计信息的并发度,例如可以同时处理的表或分区的分析任务的数量。其默认值是 `2`。在 TiDB v7.4.0 及之前的版本中,其默认值为 `4`。
#### `tidb_build_sampling_stats_concurrency`
-在执行 `ANALYZE` 普通列任务的时候,你可以使用 [`tidb_build_sampling_stats_concurrency`](/system-variables.md#tidb_build_sampling_stats_concurrency-从-v750-版本开始引入) 控制执行采样任务的并发数量,其默认值是 `2`。
+该变量控制 `ANALYZE` 在以下方面的并发情况:
+
+- 合并从不同 Region 收集的样本时的并发度。
+- 针对特殊索引(例如基于生成虚拟列的索引)的并发度,例如 TiDB 可同时为多少个特殊索引收集统计信息。
+
+其默认值为 `2`。
#### `tidb_analyze_partition_concurrency`
-在执行 `ANALYZE` 任务的时候,你可以使用 [`tidb_analyze_partition_concurrency`](/system-variables.md#tidb_analyze_partition_concurrency) 控制对分区表统计信息进行读写的并发度,其默认值是 `2`。TiDB v7.4.0 及其之前版本中,默认值为 `1`。
+该变量控制保存 `ANALYZE` 结果(将 TopN 和直方图写入系统表)的并发度。其默认值为 `2`。在 TiDB v7.4.0 及之前的版本中,其默认值为 `1`。
-#### `tidb_distsql_scan_concurrency`
+#### `tidb_analyze_distsql_scan_concurrency`
-在执行 `ANALYZE` 普通列任务的时候,你可以使用 [`tidb_distsql_scan_concurrency`](/system-variables.md#tidb_distsql_scan_concurrency) 控制一次读取的 Region 数量,其默认值是 `15`。修改该变量的值会影响查询性能,请谨慎调整。
+该变量控制 `ANALYZE` 在以下方面的并发情况:
-#### `tidb_index_serial_scan_concurrency`
+- 扫描 TiKV Region 的并发度。
+- 为特殊索引(基于虚拟列生成的索引)扫描 Region 的并发度。
-在执行 `ANALYZE` 索引列任务的时候,你可以使用 [`tidb_index_serial_scan_concurrency`](/system-variables.md#tidb_index_serial_scan_concurrency) 控制一次读取的 Region 数量,其默认值是 `1`。修改该变量的值会影响查询性能,请谨慎调整。
+其默认值为 `4`。
## 另请参阅
diff --git a/system-variables.md b/system-variables.md
index f030c70c3795..3abbef8a375d 100644
--- a/system-variables.md
+++ b/system-variables.md
@@ -1029,13 +1029,19 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数
### `tidb_analyze_distsql_scan_concurrency` 从 v7.6.0 版本开始引入
+> **注意:**
+>
+> 在 v7.6.0 之前的版本中,常规 `ANALYZE` 的 Region 扫描由 `tidb_distsql_scan_concurrency` 控制,而索引统计信息的扫描由 `tidb_index_serial_scan_concurrency` 控制。因此,对于这些版本,如需调整扫描 TiKV Region 的并发,可考虑修改 `tidb_distsql_scan_concurrency` 的值。
+
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
- 类型:整数型
- 默认值:`4`
- 范围:`[0, 4294967295]`。在 v8.2.0 之前版本中,最小值为 `1`。当设置为 `0` 时,TiDB 会根据集群规模自适应调整并发度。
-- 这个变量用来设置执行 `ANALYZE` 时 `scan` 操作的并发度。
+- 这个变量控制 `ANALYZE` 在以下方面的并发情况:
+ - 扫描 TiKV Region 的并发度。
+ - 为特殊索引(例如,基于虚拟列生成的索引)扫描 Region 的并发度。
### `tidb_analyze_partition_concurrency`
@@ -1044,7 +1050,7 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
- 默认值:`2`。TiDB v7.4.0 及其之前版本默认值为 `1`。
- 范围:`[1, 128]`。在 v8.4.0 之前版本中,取值范围是 `[1, 18446744073709551615]`。
-- 这个变量用于 TiDB analyze 分区表时,写入分区表统计信息的并发度。
+- 对于手动 `ANALYZE` 和自动 `ANALYZE`,该变量控制保存 `ANALYZE` 结果的并发度,包括将 TopN 和直方图写入系统表的并发度。
### `tidb_analyze_version` 从 v5.1.0 版本开始引入
@@ -1085,7 +1091,7 @@ mysql> SELECT @@tidb_analyze_skip_column_types;
+----------------------------------+
| @@tidb_analyze_skip_column_types |
+----------------------------------+
-| json,blob,mediumblob,longblob |
+| json,blob,mediumblob,longblob,mediumtext,longtext |
+----------------------------------+
1 row in set (0.00 sec)
@@ -1183,7 +1189,7 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1;
- 类型:整数型
- 默认值:`1`
- 范围:`[1, 256]`
-- 这个变量用来设置执行统计信息自动更新的并发度。
+- 该变量控制自动收集统计信息时,构建统计信息的并发度,例如可以同时处理的表或分区的分析任务的数量。
### `tidb_backoff_lock_fast`
@@ -1292,8 +1298,7 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1;
- 单位:线程
- 默认值:`2`。TiDB v7.4.0 及其之前版本默认值为 `4`。
- 取值范围:`[1, 256]`
-- 这个变量用来设置 ANALYZE 语句执行时并发度。
-- 当这个变量被设置得更大时,会对其它的查询语句执行性能产生一定影响。
+- 该变量控制手动收集统计信息时,构建统计信息的并发度,例如可以同时处理的表或分区的分析任务的数量。
### `tidb_build_sampling_stats_concurrency` 从 v7.5.0 版本开始引入
@@ -1304,8 +1309,9 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1;
- 单位:线程
- 默认值:`2`
- 取值范围:`[1, 256]`
-- 这个变量用来设置 `ANALYZE` 过程中的采样并发度。
-- 当这个变量被设置得更大时,会对其它的查询语句执行性能产生一定影响。
+- 这个变量控制 `ANALYZE` 在以下方面的并发情况:
+ - 合并从不同 Region 收集的样本的并发度。
+ - 针对特殊索引(例如,基于生成虚拟列的索引)的并发度,例如 TiDB 可同时为多少个特殊索引收集统计信息。
### `tidb_capture_plan_baselines` 从 v4.0 版本开始引入
@@ -2760,7 +2766,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告)
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
- 类型:布尔型
- 默认值:`OFF`
-- 该变量用于控制在悲观事务中,外键约束检查对父表中的行加锁时是否使用共享锁(而非排他锁)。开启后,多个并发事务可以同时对同一父表行执行外键检查而不互相阻塞,从而降低锁冲突并提升子表并发写入性能。
+- 该变量用于控制在悲观事务中,外键约束检查对父表中的行加锁时是否使用共享锁(而非排他锁)。开启后,多个并发事务可以同时对同一父表行执行外键检查而不互相阻塞,从而降低锁冲突并提升子表并发写入性能。
### `tidb_gc_concurrency` 从 v5.0 版本开始引入
@@ -3134,6 +3140,10 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告)
### `tidb_index_serial_scan_concurrency`
+> **警告:**
+>
+> 该变量已废弃,不再控制执行行为。顺序索引扫描目前可通过 [`tidb_executor_concurrency`](#tidb_executor_concurrency-new-in-v50) 控制并发度,而索引读取则可通过 [`ANALYZE TABLE`](/sql-statements/sql-statement-analyze-table.md) 的 [`tidb_analyze_distsql_scan_concurrency`](#tidb_analyze_distsql_scan_concurrency-new-in-v760) 控制并发度。
+
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:是
@@ -3141,7 +3151,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告)
- 默认值:`1`
- 范围:`[1, 256]`
- 单位:线程
-- 这个变量用来设置顺序 scan 操作的并发度,AP 类应用适合较大的值,TP 类应用适合较小的值。
+- 该变量仅为向后兼容而保留。你可以通过调整 [`tidb_executor_concurrency`](#tidb_executor_concurrency-new-in-v50) 控制顺序索引扫描并发度,或通过调整 [`tidb_analyze_distsql_scan_concurrency`](#tidb_analyze_distsql_scan_concurrency-new-in-v760) 调优索引统计信息收集。
### `tidb_init_chunk_size`
@@ -3545,7 +3555,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告)
- 是否持久化到集群:是
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
- 默认值:`1`
-- 这个变量用于 TiDB analyze 分区表时,对分区表统计信息进行合并时的并发度。
+- 这个变量控制合并分区表中 TopN 结果的并发度。
### `tidb_enable_async_merge_global_stats` 从 v7.5.0 版本开始引入
diff --git a/troubleshoot-tidb-oom.md b/troubleshoot-tidb-oom.md
index cbd14a150492..538eb086a820 100644
--- a/troubleshoot-tidb-oom.md
+++ b/troubleshoot-tidb-oom.md
@@ -99,7 +99,6 @@ OOM 常见的故障现象包括(但不限于):
- 调小同时读取的 Region 的数量,或降低算子并发度,以避免因高并发导致的内存问题。对应的系统变量包括:
- [`tidb_distsql_scan_concurrency`](/system-variables.md#tidb_distsql_scan_concurrency)
- - [`tidb_index_serial_scan_concurrency`](/system-variables.md#tidb_index_serial_scan_concurrency)
- [`tidb_executor_concurrency`](/system-variables.md#tidb_executor_concurrency-从-v50-版本开始引入)
- 问题发生时间附近,session 的并发度过高,此时可能需要添加节点进行扩容。