From cee5bad1e1f2f2aeb7c7833ca1e701a11131498d Mon Sep 17 00:00:00 2001 From: Frank945946 Date: Fri, 22 Nov 2024 17:48:47 +0800 Subject: [PATCH 1/5] update the description of variable "tidb_scatter_region" --- best-practices/high-concurrency-best-practices.md | 2 +- sql-statements/sql-statement-show-variables.md | 2 +- sql-statements/sql-statement-split-region.md | 2 +- system-variables.md | 7 +++---- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/best-practices/high-concurrency-best-practices.md b/best-practices/high-concurrency-best-practices.md index 44747a875d7c..95b97170d117 100644 --- a/best-practices/high-concurrency-best-practices.md +++ b/best-practices/high-concurrency-best-practices.md @@ -208,7 +208,7 @@ ORDER BY 以下全局变量会影响 `PRE_SPLIT_REGIONS` 的行为,需要特别注意: -+ `tidb_scatter_region`:该变量用于控制建表完成后是否等待预切分和打散 Region 完成后再返回结果。如果建表后有大批量写入,需要设置该变量值为 `1`,表示等待所有 Region 都切分和打散完成后再返回结果给客户端。否则未打散完成就进行写入会对写入性能影响有较大的影响。 ++ `tidb_scatter_region`:该变量用于控制建表完成后是否等待预切分和打散 Region 完成后再返回结果。如果建表后有大批量写入,需要设置该变量值为 `GLOBAL`,表示等待所有 Region 都切分和打散完成后再返回结果给客户端。否则未打散完成就进行写入会对写入性能影响有较大的影响。 示例: diff --git a/sql-statements/sql-statement-show-variables.md b/sql-statements/sql-statement-show-variables.md index 201ddf981505..74872fcb6725 100644 --- a/sql-statements/sql-statement-show-variables.md +++ b/sql-statements/sql-statement-show-variables.md @@ -121,7 +121,7 @@ SHOW GLOBAL VARIABLES LIKE 'tidb%'; | tidb_replica_read | leader | | tidb_retry_limit | 10 | | tidb_row_format_version | 2 | -| tidb_scatter_region | 0 | +| tidb_scatter_region | | | tidb_skip_isolation_level_check | 0 | | tidb_skip_utf8_check | 0 | | tidb_slow_log_threshold | 300 | diff --git a/sql-statements/sql-statement-split-region.md b/sql-statements/sql-statement-split-region.md index e3d1637188e7..83e3ee45d63b 100644 --- a/sql-statements/sql-statement-split-region.md +++ b/sql-statements/sql-statement-split-region.md @@ -359,7 +359,7 @@ region4 [("c", "") , maxIndexValue ) 以下全局变量会影响 `PRE_SPLIT_REGIONS` 的行为,需要特别注意: -* `tidb_scatter_region`:该变量用于控制建表完成后是否等待预切分和打散 Region 完成后再返回结果。如果建表后有大批量写入,需要设置该变量值为 `1`,表示等待所有 Region 都切分和打散完成后再返回结果给客户端。否则未打散完成就进行写入会对写入性能影响有较大的影响。 +* `tidb_scatter_region`:该变量用于控制建表完成后是否等待预切分和打散 Region 完成后再返回结果。如果建表后有大批量写入,需要设置该变量值为 `GLOBAL`,表示等待所有 Region 都切分和打散完成后再返回结果给客户端。否则未打散完成就进行写入会对写入性能影响有较大的影响。 ### pre_split_regions 示例 diff --git a/system-variables.md b/system-variables.md index 456c63f469df..652bf6935fe7 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4585,11 +4585,10 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:枚举型 - 默认值:`""` - 可选值:`""`,`TABLE`,`GLOBAL` -- TiDB 默认会在建表时为新表分裂 Region。该变量用于控制表的分裂打散策略,TiDB 会根据选择的打散策略进行 Region 打散。适用于批量建表后紧接着批量写入数据,让刚分裂出的 Region 先在 TiKV 分散而不用等待 PD 进行调度。为了保证后续批量写入数据的稳定性,建表语句会等待打散 Region 完成后再返回建表成功,建表语句执行时间会是该变量关闭时的数倍。可选值描述如下: - - `""`:默认值,表示不打散表 Region。 - - `TABLE`:表示在建表时,如果设置了 `PRE_SPLIT_REGIONS` 或者 `SHARD_ROW_ID_BITS` 属性,预分裂多个 Region 的场景下,会按表的粒度对这些表的 Region 进行打散。但是如果在建表时没有设置上述属性,需要快速创建大量表的场景,会导致这些表的 Region 集中在其中几个 TiKV 节点上,造成 Region 分布不均匀。 +- 当在建表时设置了 SHARD_ROW_ID_BITS 和 PRE_SPLIT_REGIONS 参数后,系统会在建表成功后自动将表均匀切分为指定数量的 Region。针对这些 Region,该变量用于控制其分裂后的打散策略。TiDB 将依据所选的打散策略对 Region 进行处理。需要特别说明的是,由于建表操作会等待 Region 打散完成后才返回成功状态,因此启用该变量可能会显著增加建表语句的执行时间,相较于未启用该变量的情况,执行时间可能会延长数倍。可选值描述如下: + - `""`:默认值,表示建表后不打散表的 Region。 + - `TABLE`:表示在建表时,预分裂多个 Region 的场景下,会按表的粒度对这些表的 Region 进行打散。但是如果在建表时没有设置上述属性,需要快速创建大量表的场景,会导致这些表的 Region 集中在其中几个 TiKV 节点上,造成 Region 分布不均匀。 - `GLOBAL`:表示 TiDB 会根据整个集群的数据分布情况来打散新建表的 Region。特别是快速创建大量表的时候,使用 `GLOBAL` 可以有效避免 Region 过度集中在少数几个 TiKV 节点上,确保 Region 在集群中分布均匀。 -- 如果建表时设置了 `SHARD_ROW_ID_BITS` 和 `PRE_SPLIT_REGIONS`,建表成功后会均匀切分出指定数量的 Region。 ### `tidb_schema_cache_size` 从 v8.0.0 版本开始引入 From e16a2ada8ddea8778480cf4b79affe587ecd392d Mon Sep 17 00:00:00 2001 From: Frank945946 Date: Fri, 22 Nov 2024 18:01:42 +0800 Subject: [PATCH 2/5] Update sql-statement-show-variables.md --- sql-statements/sql-statement-show-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-statements/sql-statement-show-variables.md b/sql-statements/sql-statement-show-variables.md index 74872fcb6725..0ec537d95ae1 100644 --- a/sql-statements/sql-statement-show-variables.md +++ b/sql-statements/sql-statement-show-variables.md @@ -121,7 +121,7 @@ SHOW GLOBAL VARIABLES LIKE 'tidb%'; | tidb_replica_read | leader | | tidb_retry_limit | 10 | | tidb_row_format_version | 2 | -| tidb_scatter_region | | +| tidb_scatter_region | | | tidb_skip_isolation_level_check | 0 | | tidb_skip_utf8_check | 0 | | tidb_slow_log_threshold | 300 | From d40b3ccb1e67041172f8db800eabde7d4abef30d Mon Sep 17 00:00:00 2001 From: Frank945946 <108602632+Frank945946@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:12:34 +0800 Subject: [PATCH 3/5] Update system-variables.md Co-authored-by: Lilian Lee --- system-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-variables.md b/system-variables.md index 652bf6935fe7..ac6af0ee4355 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4585,7 +4585,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:枚举型 - 默认值:`""` - 可选值:`""`,`TABLE`,`GLOBAL` -- 当在建表时设置了 SHARD_ROW_ID_BITS 和 PRE_SPLIT_REGIONS 参数后,系统会在建表成功后自动将表均匀切分为指定数量的 Region。针对这些 Region,该变量用于控制其分裂后的打散策略。TiDB 将依据所选的打散策略对 Region 进行处理。需要特别说明的是,由于建表操作会等待 Region 打散完成后才返回成功状态,因此启用该变量可能会显著增加建表语句的执行时间,相较于未启用该变量的情况,执行时间可能会延长数倍。可选值描述如下: +- 当在建表时设置了 `SHARD_ROW_ID_BITS` 和 `PRE_SPLIT_REGIONS` 参数后,系统会在建表成功后自动将表均匀切分为指定数量的 Region。该变量用于控制这些分裂后的 Region 的打散策略。TiDB 将依据所选的打散策略对 Region 进行处理。需要特别说明的是,由于建表操作会等待 Region 打散完成后才返回成功状态,因此启用该变量可能会显著增加建表语句的执行时间,相较于未启用该变量的情况,执行时间可能会延长数倍。可选值描述如下: - `""`:默认值,表示建表后不打散表的 Region。 - `TABLE`:表示在建表时,预分裂多个 Region 的场景下,会按表的粒度对这些表的 Region 进行打散。但是如果在建表时没有设置上述属性,需要快速创建大量表的场景,会导致这些表的 Region 集中在其中几个 TiKV 节点上,造成 Region 分布不均匀。 - `GLOBAL`:表示 TiDB 会根据整个集群的数据分布情况来打散新建表的 Region。特别是快速创建大量表的时候,使用 `GLOBAL` 可以有效避免 Region 过度集中在少数几个 TiKV 节点上,确保 Region 在集群中分布均匀。 From d0ac1e0d4c8b77ce05ab6ed8f2c92b03a13c3dac Mon Sep 17 00:00:00 2001 From: Frank945946 <108602632+Frank945946@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:13:45 +0800 Subject: [PATCH 4/5] Update sql-statements/sql-statement-split-region.md Co-authored-by: xixirangrang --- sql-statements/sql-statement-split-region.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-statements/sql-statement-split-region.md b/sql-statements/sql-statement-split-region.md index 83e3ee45d63b..ac8cbb7cbc16 100644 --- a/sql-statements/sql-statement-split-region.md +++ b/sql-statements/sql-statement-split-region.md @@ -359,7 +359,7 @@ region4 [("c", "") , maxIndexValue ) 以下全局变量会影响 `PRE_SPLIT_REGIONS` 的行为,需要特别注意: -* `tidb_scatter_region`:该变量用于控制建表完成后是否等待预切分和打散 Region 完成后再返回结果。如果建表后有大批量写入,需要设置该变量值为 `GLOBAL`,表示等待所有 Region 都切分和打散完成后再返回结果给客户端。否则未打散完成就进行写入会对写入性能影响有较大的影响。 +* [`tidb_scatter_region`](/system-variables.md#tidb_scatter_region):该变量用于控制建表完成后是否等待预切分和打散 Region 完成后再返回结果。如果建表后有大批量写入,需要设置该变量值为 `GLOBAL`,表示 TiDB 会根据整个集群的数据分布情况来打散新建表的 Region。否则未打散完成就进行写入会对写入性能影响有较大的影响。 ### pre_split_regions 示例 From 8e30b119f55c3ce08ce13a9cdcb94561962cf674 Mon Sep 17 00:00:00 2001 From: Frank945946 <108602632+Frank945946@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:14:03 +0800 Subject: [PATCH 5/5] Update best-practices/high-concurrency-best-practices.md Co-authored-by: xixirangrang --- best-practices/high-concurrency-best-practices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/best-practices/high-concurrency-best-practices.md b/best-practices/high-concurrency-best-practices.md index 95b97170d117..901778194b74 100644 --- a/best-practices/high-concurrency-best-practices.md +++ b/best-practices/high-concurrency-best-practices.md @@ -208,7 +208,7 @@ ORDER BY 以下全局变量会影响 `PRE_SPLIT_REGIONS` 的行为,需要特别注意: -+ `tidb_scatter_region`:该变量用于控制建表完成后是否等待预切分和打散 Region 完成后再返回结果。如果建表后有大批量写入,需要设置该变量值为 `GLOBAL`,表示等待所有 Region 都切分和打散完成后再返回结果给客户端。否则未打散完成就进行写入会对写入性能影响有较大的影响。 ++ [`tidb_scatter_region`](/system-variables.md#tidb_scatter_region):该变量用于控制建表完成后是否等待预切分和打散 Region 完成后再返回结果。如果建表后有大批量写入,需要设置该变量值为 `GLOBAL`,表示等待所有 Region 都切分和打散完成后再返回结果给客户端。否则未打散完成就进行写入会对写入性能影响有较大的影响。 示例: