From 141e5c77a34beff168e4b7ed2aaeb54e255561d2 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Sat, 14 Sep 2024 20:08:59 +0800 Subject: [PATCH 1/8] sysvars: add tidb_shard_row_id_bits and tidb_pre_split_regions Signed-off-by: Jack Yu --- system-variables.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/system-variables.md b/system-variables.md index cec73a463b29..dbe2a30cd316 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4305,6 +4305,16 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 这个变量用来控制单个 `SESSION` 的 Prepared Plan Cache 最多能够缓存的计划数量,具体可见 [Prepared Plan Cache 的内存管理](/sql-prepared-plan-cache.md#prepared-plan-cache-的内存管理)。 - 在 v6.1.0 之前这个开关通过 TiDB 配置文件 (`prepared-plan-cache.capacity`) 进行配置,升级到 v6.1.0 时会自动继承原有设置。 +### `tidb_pre_split_regions` 从 v8.4.0 版本开始引入 + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否 +- 类型:整数型 +- 默认值:`0` +- 范围:`[0, 15]` +- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 CRATE TABLE 语句时,TiDB 会将为允许使用 `pre_split_regions` 的表 (如,NONCLUSTERED 表) 自动设定该属性。详细说明见 [pre_split_regions](/sql-statement-split-region.md)。该变量通常与 `tidb_shard_row_id_bits` 配合使用,用于为新建表进行分片以及 region 预分裂。 + ### `tidb_projection_concurrency` > **警告:** @@ -4602,6 +4612,16 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 范围:`[1, 9223372036854775807]` - 该变量设置为 [`AUTO_RANDOM`](/auto-random.md) 或 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md) 属性列分配的最大连续 ID 数。通常,`AUTO_RANDOM` ID 或带有 `SHARD_ROW_ID_BITS` 属性的行 ID 在一个事务中是增量和连续的。你可以使用该变量来解决大事务场景下的热点问题。 +### `tidb_shard_row_id_bits` 从 v8.4.0 版本开始引入 + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否 +- 类型:整数型 +- 默认值:`0` +- 范围:`[0, 15]` +- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 CRATE TABLE 语句时,TiDB 会将为允许使用 `shard_row_id_bits` 的表 (如,NONCLUSTERED 表) 自动设定该属性。详细说明见 [SHARD_ROW_ID_BITS](/shard-row-id-bits.md)。 + ### `tidb_simplified_metrics` - 作用域:GLOBAL From afcacc5a7e4156197c55be08a5e7b0689040c445 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Sat, 14 Sep 2024 20:20:12 +0800 Subject: [PATCH 2/8] fix ci Signed-off-by: Jack Yu --- system-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-variables.md b/system-variables.md index dbe2a30cd316..8406a2b89b7f 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4313,7 +4313,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 CRATE TABLE 语句时,TiDB 会将为允许使用 `pre_split_regions` 的表 (如,NONCLUSTERED 表) 自动设定该属性。详细说明见 [pre_split_regions](/sql-statement-split-region.md)。该变量通常与 `tidb_shard_row_id_bits` 配合使用,用于为新建表进行分片以及 region 预分裂。 +- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 CRATE TABLE 语句时,TiDB 会将为允许使用 `pre_split_regions` 的表 (如,NONCLUSTERED 表) 自动设定该属性。详细说明见 [pre_split_regions](/sql-statements/sql-statement-split-region.md)。该变量通常与 `tidb_shard_row_id_bits` 配合使用,用于为新建表进行分片以及 region 预分裂。 ### `tidb_projection_concurrency` From cc698bba791162b6c4ac4ce25aeff8d3a388554e Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Wed, 18 Sep 2024 21:13:02 +0800 Subject: [PATCH 3/8] Apply suggestions from code review --- system-variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system-variables.md b/system-variables.md index 8406a2b89b7f..9affcb587404 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4313,7 +4313,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 CRATE TABLE 语句时,TiDB 会将为允许使用 `pre_split_regions` 的表 (如,NONCLUSTERED 表) 自动设定该属性。详细说明见 [pre_split_regions](/sql-statements/sql-statement-split-region.md)。该变量通常与 `tidb_shard_row_id_bits` 配合使用,用于为新建表进行分片以及 region 预分裂。 +- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 `CRATE TABLE` 语句时,TiDB 会将为允许使用 `PRE_SPLIT_REGIONS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 ### `tidb_projection_concurrency` @@ -4620,7 +4620,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 CRATE TABLE 语句时,TiDB 会将为允许使用 `shard_row_id_bits` 的表 (如,NONCLUSTERED 表) 自动设定该属性。详细说明见 [SHARD_ROW_ID_BITS](/shard-row-id-bits.md)。 +- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CRATE TABLE` 语句时,TiDB 会将为允许使用 `SHARD_ROW_ID_BITS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 ### `tidb_simplified_metrics` From 8c66e19fcdbeabf8f9e5a9301e11c42de89b623c Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Wed, 18 Sep 2024 22:53:33 +0800 Subject: [PATCH 4/8] Apply suggestions from code review --- system-variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system-variables.md b/system-variables.md index 9affcb587404..a15f58d5ca48 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4313,7 +4313,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 `CRATE TABLE` 语句时,TiDB 会将为允许使用 `PRE_SPLIT_REGIONS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 +- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会将为允许使用 `PRE_SPLIT_REGIONS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 ### `tidb_projection_concurrency` @@ -4620,7 +4620,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CRATE TABLE` 语句时,TiDB 会将为允许使用 `SHARD_ROW_ID_BITS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 +- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会将为允许使用 `SHARD_ROW_ID_BITS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 ### `tidb_simplified_metrics` From cc48415cc9b255016a2f80890194468c3750d957 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 19 Sep 2024 09:26:35 +0800 Subject: [PATCH 5/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 a15f58d5ca48..3fd5b047f53a 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4620,7 +4620,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会将为允许使用 `SHARD_ROW_ID_BITS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 +- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会将为允许使用 `SHARD_ROW_ID_BITS` 的表(如 NONCLUSTERED 表)自动设定该属性。详细说明见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 ### `tidb_simplified_metrics` From cec96de29872c3c24a0e73fe46eafd28ebb7fcfe Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 19 Sep 2024 09:31:30 +0800 Subject: [PATCH 6/8] Apply suggestions from code review --- system-variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system-variables.md b/system-variables.md index 3fd5b047f53a..aa85c0979e34 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4313,7 +4313,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会将为允许使用 `PRE_SPLIT_REGIONS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 +- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `PRE_SPLIT_REGIONS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 ### `tidb_projection_concurrency` @@ -4620,7 +4620,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会将为允许使用 `SHARD_ROW_ID_BITS` 的表(如 NONCLUSTERED 表)自动设定该属性。详细说明见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 +- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `SHARD_ROW_ID_BITS` 的表(如 NONCLUSTERED 表)自动设定该属性。详细说明见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 ### `tidb_simplified_metrics` From f3c09ca3b285f15bd8b595b02562a5837ebe911e Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Tue, 8 Oct 2024 16:37:42 +0800 Subject: [PATCH 7/8] Update wording --- system-variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system-variables.md b/system-variables.md index aa85c0979e34..01486b4a4902 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4313,7 +4313,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `PRE_SPLIT_REGIONS` 的表(如,NONCLUSTERED 表)自动设定该属性。详细说明见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 +- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `PRE_SPLIT_REGIONS` 的表(例如 `NONCLUSTERED` 表)自动设定该属性。详见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 ### `tidb_projection_concurrency` @@ -4620,7 +4620,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `SHARD_ROW_ID_BITS` 的表(如 NONCLUSTERED 表)自动设定该属性。详细说明见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 +- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `SHARD_ROW_ID_BITS` 的表(例如 `NONCLUSTERED` 表)自动设定该属性。详见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 ### `tidb_simplified_metrics` From 98358a6fafe2cb0bef40e980897327a656917d19 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Tue, 8 Oct 2024 17:08:41 +0800 Subject: [PATCH 8/8] Refine wording --- system-variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system-variables.md b/system-variables.md index 01486b4a4902..267e231278d2 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4313,7 +4313,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行分裂分片数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `PRE_SPLIT_REGIONS` 的表(例如 `NONCLUSTERED` 表)自动设定该属性。详见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 +- 该变量用于设置新建表默认的行分裂分片数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `PRE_SPLIT_REGIONS` 的表(例如 `NONCLUSTERED` 表)自动设定该属性。详见 [`PRE_SPLIT_REGIONS`](/sql-statements/sql-statement-split-region.md#pre_split_regions)。该变量通常与 [`tidb_shard_row_id_bits`](/system-variables.md#tidb_shard_row_id_bits-从-v840-版本开始引入) 配合使用,用于为新建表进行分片以及 Region 预分裂。 ### `tidb_projection_concurrency` @@ -4620,7 +4620,7 @@ EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL; - 类型:整数型 - 默认值:`0` - 范围:`[0, 15]` -- 该变量用于设置新建表的默认行 ID 的分片位数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `SHARD_ROW_ID_BITS` 的表(例如 `NONCLUSTERED` 表)自动设定该属性。详见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 +- 该变量用于设置新建表默认的行 ID 的分片数。当设置了该变量为非 0 值后,执行 `CREATE TABLE` 语句时,TiDB 会为允许使用 `SHARD_ROW_ID_BITS` 的表(例如 `NONCLUSTERED` 表)自动设定该属性。详见 [`SHARD_ROW_ID_BITS`](/shard-row-id-bits.md)。 ### `tidb_simplified_metrics`