From f7e92657c4b1beef345801a5e6c0399cdd6d54ca Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Wed, 26 Oct 2022 15:58:23 +0800 Subject: [PATCH 01/12] auto-increment: update doc for the new implementation --- auto-increment.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/auto-increment.md b/auto-increment.md index 534592342ec6..d2c138936768 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -18,6 +18,10 @@ aliases: ['/docs-cn/dev/auto-increment/'] 出于性能原因,自增编号是系统批量分配给每台 TiDB 服务器的值(默认 3 万个值),因此自增编号能保证唯一性,但分配给 `INSERT` 语句的值仅在单台 TiDB 服务器上具有单调性。 +> **注意:** +> +> 如果要求自增编号单调,并且 TiDB 版本在 v6.4.0 及以上,推荐使用 [MySQL 兼容模式](/auto-increment.md#MySQL-兼容模式) + {{< copyable "sql" >}} ```sql @@ -322,6 +326,27 @@ SELECT * FROM t; 从 v3.0.9 和 v4.0.rc-1 开始,和 MySQL 的行为类似,自增列隐式分配的值遵循 session 变量 `@@auto_increment_increment` 和 `@@auto_increment_offset` 的控制,其中自增列隐式分配的值 (ID) 将满足式子 `(ID - auto_increment_offset) % auto_increment_increment == 0`。 +## MySQL 兼容模式 + +从 v6.4.0 开始,TiDB 实现了中心化分配的服务,可以支持 TiDB 实例不缓存数据,而是每次请求都访问中心化服务获取 ID。 + +当前中心化分配服务内置在 TiDB 进程,类似于 DDL Owner 的工作模式。有一个 TiDB 实例将充当 "主" 的角色提供 ID 分配服务,而其它的 TiDB 实例将充当 "备" 角色。当 "主" 节点发生故障时,会自动进行 "主备切换",从而保证中心化服务的高可用。 + +MySQL 兼容模式的使用方式是,建表时将 `AUTO_ID_CACHE` 设置为 1: + +```sql +CREATE TABLE t(a int AUTO_INCREMENT key) AUTO_ID_CACHE 1; +``` + +> **注意:** +> +> 无论新版本或旧版本,`AUTO_ID_CACHE` 设置为 1 都表明 TiDB 不再缓存 ID,但是具体对应的实现方式不一样。 +> 早期的版本设置 `AUTO_ID_CACHE` 为 1 之后性能非常差,因为每次分配 ID 都需要通过一个 TiKV 事务完成 `AUTO_INCREMENT` 值的持久化修改。 +> v6.4.0 以上版本(包含 v6.4.0),由于引入了中心化的分配服务,`AUTO_INCREMENT` 值的修改只是在服务进程中的一个内存操作,更加轻量。 + +使用 MySQL 兼容模式后,能保证 ID **唯一**,**单调递增**,行为几乎跟 MySQL 完成一致,即使跨 TiDB 实例访问,ID 也不会出现回退。 +仅当中心化服务的 "主" 异常崩溃时,有可能会造成少量 ID 不连续,出现空洞。这是因为主备切换时,"备" 需要丢弃一部分之前的 "主" 可能分配出去的 ID,以保证 ID 不出现重复。 + ## 使用限制 目前在 TiDB 中使用 `AUTO_INCREMENT` 有以下限制: From fa1e9e06597aef34531db3fb1f825d8057322316 Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Wed, 26 Oct 2022 16:33:01 +0800 Subject: [PATCH 02/12] Update auto-increment.md Co-authored-by: Aolin --- auto-increment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto-increment.md b/auto-increment.md index d2c138936768..2a70db64ee7b 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -20,7 +20,7 @@ aliases: ['/docs-cn/dev/auto-increment/'] > **注意:** > -> 如果要求自增编号单调,并且 TiDB 版本在 v6.4.0 及以上,推荐使用 [MySQL 兼容模式](/auto-increment.md#MySQL-兼容模式) +> 如果要求自增编号单调,并且 TiDB 版本在 v6.4.0 及以上,推荐使用 [MySQL 兼容模式](/auto-increment.md#mysql-兼容模式)。 {{< copyable "sql" >}} From cb6680530a7f105f68999dc51ecadcd366db9e22 Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Wed, 26 Oct 2022 16:34:33 +0800 Subject: [PATCH 03/12] Update auto-increment.md Co-authored-by: Aolin --- auto-increment.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/auto-increment.md b/auto-increment.md index 2a70db64ee7b..2ef834a2957e 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -330,9 +330,9 @@ SELECT * FROM t; 从 v6.4.0 开始,TiDB 实现了中心化分配的服务,可以支持 TiDB 实例不缓存数据,而是每次请求都访问中心化服务获取 ID。 -当前中心化分配服务内置在 TiDB 进程,类似于 DDL Owner 的工作模式。有一个 TiDB 实例将充当 "主" 的角色提供 ID 分配服务,而其它的 TiDB 实例将充当 "备" 角色。当 "主" 节点发生故障时,会自动进行 "主备切换",从而保证中心化服务的高可用。 +当前中心化分配服务内置在 TiDB 进程,类似于 DDL Owner 的工作模式。有一个 TiDB 实例将充当“主”的角色提供 ID 分配服务,而其它的 TiDB 实例将充当“备”角色。当“主”节点发生故障时,会自动进行“主备切换",从而保证中心化服务的高可用。 -MySQL 兼容模式的使用方式是,建表时将 `AUTO_ID_CACHE` 设置为 1: +MySQL 兼容模式的使用方式是,建表时将 `AUTO_ID_CACHE` 设置为 `1`: ```sql CREATE TABLE t(a int AUTO_INCREMENT key) AUTO_ID_CACHE 1; From 9ef2de778b435b74927d4aa23e5c28a62b42466a Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Wed, 26 Oct 2022 16:35:10 +0800 Subject: [PATCH 04/12] Update auto-increment.md Co-authored-by: Aolin --- auto-increment.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/auto-increment.md b/auto-increment.md index 2ef834a2957e..c6d254182c3f 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -338,14 +338,15 @@ MySQL 兼容模式的使用方式是,建表时将 `AUTO_ID_CACHE` 设置为 `1 CREATE TABLE t(a int AUTO_INCREMENT key) AUTO_ID_CACHE 1; ``` + > **注意:** > -> 无论新版本或旧版本,`AUTO_ID_CACHE` 设置为 1 都表明 TiDB 不再缓存 ID,但是具体对应的实现方式不一样。 -> 早期的版本设置 `AUTO_ID_CACHE` 为 1 之后性能非常差,因为每次分配 ID 都需要通过一个 TiKV 事务完成 `AUTO_INCREMENT` 值的持久化修改。 -> v6.4.0 以上版本(包含 v6.4.0),由于引入了中心化的分配服务,`AUTO_INCREMENT` 值的修改只是在服务进程中的一个内存操作,更加轻量。 +> 在 TiDB 各个版本中,`AUTO_ID_CACHE` 设置为 `1` 都表明 TiDB 不再缓存 ID,但是不同版本的实现方式不一样: +> +> - 对于 TiDB v6.4.0 之前的版本,由于每次分配 ID 都需要通过一个 TiKV 事务完成 `AUTO_INCREMENT` 值的持久化修改,因此设置 `AUTO_ID_CACHE` 为 `1` 会出现性能下降。 +> - 对于 v6.4.0 及以上版本,由于引入了中心化的分配服务,`AUTO_INCREMENT` 值的修改只是在服务进程中的一个内存操作,更加轻量。 -使用 MySQL 兼容模式后,能保证 ID **唯一**,**单调递增**,行为几乎跟 MySQL 完成一致,即使跨 TiDB 实例访问,ID 也不会出现回退。 -仅当中心化服务的 "主" 异常崩溃时,有可能会造成少量 ID 不连续,出现空洞。这是因为主备切换时,"备" 需要丢弃一部分之前的 "主" 可能分配出去的 ID,以保证 ID 不出现重复。 +使用 MySQL 兼容模式后,能保证 ID **唯一**、**单调递增**,行为几乎跟 MySQL 完成一致。即使跨 TiDB 实例访问,ID 也不会出现回退。只有当中心化服务的“主”异常崩溃时,才有可能造成少量 ID 不连续,出现空洞。这是因为主备切换时,“备”需要丢弃一部分之前的“主“可能分配出去的 ID,以保证 ID 不出现重复。 ## 使用限制 From 0cb82dd9c8dabdd112b904e807c2b40abf62bda5 Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Thu, 27 Oct 2022 14:41:32 +0800 Subject: [PATCH 05/12] Update auto-increment.md Co-authored-by: Aolin --- auto-increment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto-increment.md b/auto-increment.md index c6d254182c3f..3980ec4652d0 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -20,7 +20,7 @@ aliases: ['/docs-cn/dev/auto-increment/'] > **注意:** > -> 如果要求自增编号单调,并且 TiDB 版本在 v6.4.0 及以上,推荐使用 [MySQL 兼容模式](/auto-increment.md#mysql-兼容模式)。 +> 如果要求自增编号在所有 TiDB 实例上具有单调性,并且你的 TiDB 版本在 v6.4.0 及以上,推荐使用 [MySQL 兼容模式](#mysql-兼容模式)。 {{< copyable "sql" >}} From f151f2a6ef3ee2f62484cc7b25b056b874aa5a1c Mon Sep 17 00:00:00 2001 From: Aolin Date: Thu, 27 Oct 2022 14:52:09 +0800 Subject: [PATCH 06/12] fix format --- auto-increment.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/auto-increment.md b/auto-increment.md index 3980ec4652d0..55fd45de3ee5 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -330,7 +330,7 @@ SELECT * FROM t; 从 v6.4.0 开始,TiDB 实现了中心化分配的服务,可以支持 TiDB 实例不缓存数据,而是每次请求都访问中心化服务获取 ID。 -当前中心化分配服务内置在 TiDB 进程,类似于 DDL Owner 的工作模式。有一个 TiDB 实例将充当“主”的角色提供 ID 分配服务,而其它的 TiDB 实例将充当“备”角色。当“主”节点发生故障时,会自动进行“主备切换",从而保证中心化服务的高可用。 +当前中心化分配服务内置在 TiDB 进程,类似于 DDL Owner 的工作模式。有一个 TiDB 实例将充当“主”的角色提供 ID 分配服务,而其它的 TiDB 实例将充当“备”角色。当“主”节点发生故障时,会自动进行“主备切换”,从而保证中心化服务的高可用。 MySQL 兼容模式的使用方式是,建表时将 `AUTO_ID_CACHE` 设置为 `1`: @@ -338,15 +338,14 @@ MySQL 兼容模式的使用方式是,建表时将 `AUTO_ID_CACHE` 设置为 `1 CREATE TABLE t(a int AUTO_INCREMENT key) AUTO_ID_CACHE 1; ``` - > **注意:** > > 在 TiDB 各个版本中,`AUTO_ID_CACHE` 设置为 `1` 都表明 TiDB 不再缓存 ID,但是不同版本的实现方式不一样: > > - 对于 TiDB v6.4.0 之前的版本,由于每次分配 ID 都需要通过一个 TiKV 事务完成 `AUTO_INCREMENT` 值的持久化修改,因此设置 `AUTO_ID_CACHE` 为 `1` 会出现性能下降。 -> - 对于 v6.4.0 及以上版本,由于引入了中心化的分配服务,`AUTO_INCREMENT` 值的修改只是在服务进程中的一个内存操作,更加轻量。 +> - 对于 v6.4.0 及以上版本,由于引入了中心化的分配服务,`AUTO_INCREMENT` 值的修改只是在 TiDB 服务进程中的一个内存操作,相较于之前版本更加轻量。 -使用 MySQL 兼容模式后,能保证 ID **唯一**、**单调递增**,行为几乎跟 MySQL 完成一致。即使跨 TiDB 实例访问,ID 也不会出现回退。只有当中心化服务的“主”异常崩溃时,才有可能造成少量 ID 不连续,出现空洞。这是因为主备切换时,“备”需要丢弃一部分之前的“主“可能分配出去的 ID,以保证 ID 不出现重复。 +使用 MySQL 兼容模式后,能保证 ID **唯一**、**单调递增**,行为几乎跟 MySQL 完全一致。即使跨 TiDB 实例访问,ID 也不会出现回退。只有当中心化服务的“主” TiDB 实例异常崩溃时,才有可能造成少量 ID 不连续,出现空洞。这是因为主备切换时,“备”需要丢弃一部分之前的“主”可能分配出去的 ID,以保证 ID 不出现重复。 ## 使用限制 From 36016ec89f65d2a46b54a2e4f2e0bc4620aa865b Mon Sep 17 00:00:00 2001 From: Aolin Date: Thu, 27 Oct 2022 16:33:26 +0800 Subject: [PATCH 07/12] Apply suggestions from code review Co-authored-by: shichun-0415 <89768198+shichun-0415@users.noreply.github.com> --- auto-increment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto-increment.md b/auto-increment.md index 55fd45de3ee5..bd57e4da374a 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -345,7 +345,7 @@ CREATE TABLE t(a int AUTO_INCREMENT key) AUTO_ID_CACHE 1; > - 对于 TiDB v6.4.0 之前的版本,由于每次分配 ID 都需要通过一个 TiKV 事务完成 `AUTO_INCREMENT` 值的持久化修改,因此设置 `AUTO_ID_CACHE` 为 `1` 会出现性能下降。 > - 对于 v6.4.0 及以上版本,由于引入了中心化的分配服务,`AUTO_INCREMENT` 值的修改只是在 TiDB 服务进程中的一个内存操作,相较于之前版本更加轻量。 -使用 MySQL 兼容模式后,能保证 ID **唯一**、**单调递增**,行为几乎跟 MySQL 完全一致。即使跨 TiDB 实例访问,ID 也不会出现回退。只有当中心化服务的“主” TiDB 实例异常崩溃时,才有可能造成少量 ID 不连续,出现空洞。这是因为主备切换时,“备”需要丢弃一部分之前的“主”可能分配出去的 ID,以保证 ID 不出现重复。 +使用 MySQL 兼容模式后,能保证 ID **唯一**、**单调递增**,行为几乎跟 MySQL 完全一致。即使跨 TiDB 实例访问,ID 也不会出现回退。只有当中心化服务的“主” TiDB 实例异常崩溃时,才有可能造成少量 ID 不连续。这是因为主备切换时,“备” 节点需要丢弃一部分之前的“主” 节点可能已经分配的 ID,以保证 ID 不出现重复。 ## 使用限制 From 284aeb720433333ed3cb8fdbbb3ddba0c8c29594 Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Thu, 27 Oct 2022 18:09:34 +0800 Subject: [PATCH 08/12] Update auto-increment.md Co-authored-by: Aolin --- auto-increment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto-increment.md b/auto-increment.md index bd57e4da374a..775c2db6ba2a 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -343,7 +343,7 @@ CREATE TABLE t(a int AUTO_INCREMENT key) AUTO_ID_CACHE 1; > 在 TiDB 各个版本中,`AUTO_ID_CACHE` 设置为 `1` 都表明 TiDB 不再缓存 ID,但是不同版本的实现方式不一样: > > - 对于 TiDB v6.4.0 之前的版本,由于每次分配 ID 都需要通过一个 TiKV 事务完成 `AUTO_INCREMENT` 值的持久化修改,因此设置 `AUTO_ID_CACHE` 为 `1` 会出现性能下降。 -> - 对于 v6.4.0 及以上版本,由于引入了中心化的分配服务,`AUTO_INCREMENT` 值的修改只是在 TiDB 服务进程中的一个内存操作,相较于之前版本更加轻量。 +> - 对于 v6.4.0 及以上版本,由于引入了中心化的分配服务,`AUTO_INCREMENT` 值的修改只是在 TiDB 服务进程中的一个内存操作,相较于之前版本更快。 使用 MySQL 兼容模式后,能保证 ID **唯一**、**单调递增**,行为几乎跟 MySQL 完全一致。即使跨 TiDB 实例访问,ID 也不会出现回退。只有当中心化服务的“主” TiDB 实例异常崩溃时,才有可能造成少量 ID 不连续。这是因为主备切换时,“备” 节点需要丢弃一部分之前的“主” 节点可能已经分配的 ID,以保证 ID 不出现重复。 From 2588bfc8a5d354af530d7a34d780c187274ccea9 Mon Sep 17 00:00:00 2001 From: Aolin Date: Tue, 1 Nov 2022 12:38:37 +0800 Subject: [PATCH 09/12] Apply suggestions from code review --- auto-increment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auto-increment.md b/auto-increment.md index 775c2db6ba2a..72f271cb7051 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -328,7 +328,7 @@ SELECT * FROM t; ## MySQL 兼容模式 -从 v6.4.0 开始,TiDB 实现了中心化分配的服务,可以支持 TiDB 实例不缓存数据,而是每次请求都访问中心化服务获取 ID。 +从 v6.4.0 开始,TiDB 实现了中心化分配自增 ID 的服务,可以支持 TiDB 实例不缓存数据,而是每次请求都访问中心化服务获取 ID。 当前中心化分配服务内置在 TiDB 进程,类似于 DDL Owner 的工作模式。有一个 TiDB 实例将充当“主”的角色提供 ID 分配服务,而其它的 TiDB 实例将充当“备”角色。当“主”节点发生故障时,会自动进行“主备切换”,从而保证中心化服务的高可用。 From 78ea7301ac2164a2d20f121eeff4c7d9848eca3b Mon Sep 17 00:00:00 2001 From: Aolin Date: Fri, 4 Nov 2022 15:09:41 +0800 Subject: [PATCH 10/12] add experimental warning --- auto-increment.md | 6 +++++- experimental-features.md | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/auto-increment.md b/auto-increment.md index 72f271cb7051..30805817fe87 100644 --- a/auto-increment.md +++ b/auto-increment.md @@ -20,7 +20,7 @@ aliases: ['/docs-cn/dev/auto-increment/'] > **注意:** > -> 如果要求自增编号在所有 TiDB 实例上具有单调性,并且你的 TiDB 版本在 v6.4.0 及以上,推荐使用 [MySQL 兼容模式](#mysql-兼容模式)。 +> 如果要求自增编号在所有 TiDB 实例上具有单调性,并且你的 TiDB 版本在 v6.4.0 及以上,你可以使用 v6.4.0 引入的实验特性 [MySQL 兼容模式](#mysql-兼容模式)。 {{< copyable "sql" >}} @@ -330,6 +330,10 @@ SELECT * FROM t; 从 v6.4.0 开始,TiDB 实现了中心化分配自增 ID 的服务,可以支持 TiDB 实例不缓存数据,而是每次请求都访问中心化服务获取 ID。 +> **警告:** +> +> 当前该功能为实验特性,不建议在生产环境中使用。 + 当前中心化分配服务内置在 TiDB 进程,类似于 DDL Owner 的工作模式。有一个 TiDB 实例将充当“主”的角色提供 ID 分配服务,而其它的 TiDB 实例将充当“备”角色。当“主”节点发生故障时,会自动进行“主备切换”,从而保证中心化服务的高可用。 MySQL 兼容模式的使用方式是,建表时将 `AUTO_ID_CACHE` 设置为 `1`: diff --git a/experimental-features.md b/experimental-features.md index 04b4a0987a31..3eb204b641dc 100644 --- a/experimental-features.md +++ b/experimental-features.md @@ -38,6 +38,7 @@ aliases: ['/docs-cn/dev/experimental-features-4.0/','/zh/tidb/dev/experimental-f + [元数据锁](/metadata-lock.md) (v6.3.0 实验特性) + [Range INTERVAL 分区](/partitioned-table.md#range-interval-分区)(v6.3.0 实验特性) + [添加索引加速](/system-variables.md#tidb_ddl_enable_fast_reorg-从-v630-版本开始引入)(v6.3.0 实验特性) ++ [`AUTO_INCREMENT` MySQL 兼容模式](/auto-increment.md#mysql-兼容模式)(v6.4.0 实验特性) ## 存储 From e8600ba344a6902e9c25b07ba41d1bfe8da93de4 Mon Sep 17 00:00:00 2001 From: Aolin Date: Fri, 4 Nov 2022 15:15:36 +0800 Subject: [PATCH 11/12] update MySQL compatibility --- mysql-compatibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index a89b6b011d71..f05c27ae5e97 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -49,7 +49,7 @@ aliases: ['/docs-cn/dev/mysql-compatibility/','/docs-cn/dev/reference/mysql-comp ### 自增 ID -- TiDB 的自增列既能保证唯一,也能保证在单个 TiDB server 中自增,但不保证多个 TiDB server 中自增,不保证自动分配的值的连续性。不建议将缺省值和自定义值混用,若混用可能会收到 `Duplicated Error` 的错误信息。 +- TiDB 的自增列既能保证唯一,也能保证在单个 TiDB server 中自增,使用 [`AUTO_INCREMENT` MySQL 兼容模式](/auto-increment.md#mysql-兼容模式)能保证多个 TiDB server 中自增,不保证自动分配的值的连续性。不建议将缺省值和自定义值混用,若混用可能会收到 `Duplicated Error` 的错误信息。 - TiDB 可通过 `tidb_allow_remove_auto_inc` 系统变量开启或者关闭允许移除列的 `AUTO_INCREMENT` 属性。删除列属性的语法是:`ALTER TABLE MODIFY` 或 `ALTER TABLE CHANGE`。 From 81c79aae5c2c55b77ea507ed8950a7a4ef233aa2 Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Sat, 5 Nov 2022 22:10:56 +0800 Subject: [PATCH 12/12] Update mysql-compatibility.md Co-authored-by: shichun-0415 <89768198+shichun-0415@users.noreply.github.com> --- mysql-compatibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-compatibility.md b/mysql-compatibility.md index f05c27ae5e97..355ffdb4fa9c 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -49,7 +49,7 @@ aliases: ['/docs-cn/dev/mysql-compatibility/','/docs-cn/dev/reference/mysql-comp ### 自增 ID -- TiDB 的自增列既能保证唯一,也能保证在单个 TiDB server 中自增,使用 [`AUTO_INCREMENT` MySQL 兼容模式](/auto-increment.md#mysql-兼容模式)能保证多个 TiDB server 中自增,不保证自动分配的值的连续性。不建议将缺省值和自定义值混用,若混用可能会收到 `Duplicated Error` 的错误信息。 +- TiDB 的自增列既能保证唯一,也能保证在单个 TiDB server 中自增,使用 [`AUTO_INCREMENT` MySQL 兼容模式](/auto-increment.md#mysql-兼容模式)能保证多个 TiDB server 中自增 ID,但不保证自动分配的值的连续性。不建议将缺省值和自定义值混用,若混用可能会收到 `Duplicated Error` 的错误信息。 - TiDB 可通过 `tidb_allow_remove_auto_inc` 系统变量开启或者关闭允许移除列的 `AUTO_INCREMENT` 属性。删除列属性的语法是:`ALTER TABLE MODIFY` 或 `ALTER TABLE CHANGE`。