From 1728c8ec2a4753f3ae1b4d791564106cde52cb7a Mon Sep 17 00:00:00 2001 From: houfaxin Date: Thu, 16 Oct 2025 14:47:36 +0800 Subject: [PATCH 1/6] Update optimistic-transaction.md --- optimistic-transaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimistic-transaction.md b/optimistic-transaction.md index 94dc34075dc1..48b323ed9e17 100644 --- a/optimistic-transaction.md +++ b/optimistic-transaction.md @@ -69,7 +69,7 @@ aliases: ['/docs-cn/dev/optimistic-transaction/','/docs-cn/dev/reference/transac > > 从 v8.0.0 开始,[`tidb_disable_txn_auto_retry`](/system-variables.md#tidb_disable_txn_auto_retry) 被废弃,不再支持乐观事务的自动重试。推荐使用[悲观事务模式](/pessimistic-transaction.md)。如果使用乐观事务模式发生冲突,请在应用里捕获错误并重试。 -使用乐观事务模型时,在高冲突率的场景中,事务容易发生写写冲突而导致提交失败。MySQL 使用悲观事务模型,在执行写入类型的 SQL 语句的过程中进行加锁并且在 Repeatable Read 隔离级别下使用了当前读的机制,能够读取到最新的数据,所以提交时一般不会出现异常。为了降低应用改造难度,TiDB 提供了数据库内部自动重试机制。 +使用乐观事务模型时,在高冲突率的场景中,事务容易发生写写冲突而导致提交失败。TiDB 和 MySQL 都默认使用[悲观事务模型](/pessimistic-transaction.md),在执行写入类型的 SQL 语句的过程中进行加锁并且在 Repeatable Read 隔离级别下使用了当前读的机制,能够读取到最新的数据,所以提交时一般不会出现异常。为了降低应用改造难度,TiDB 提供了数据库内部自动重试机制。 ### 重试机制 From 67df31a1399c2ad919a984b8e221f7a4fcb9eb54 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 16 Oct 2025 15:27:09 +0800 Subject: [PATCH 2/6] Update optimistic-transaction.md Co-authored-by: Lilian Lee --- optimistic-transaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimistic-transaction.md b/optimistic-transaction.md index 48b323ed9e17..dd4b5bb4f250 100644 --- a/optimistic-transaction.md +++ b/optimistic-transaction.md @@ -69,7 +69,7 @@ aliases: ['/docs-cn/dev/optimistic-transaction/','/docs-cn/dev/reference/transac > > 从 v8.0.0 开始,[`tidb_disable_txn_auto_retry`](/system-variables.md#tidb_disable_txn_auto_retry) 被废弃,不再支持乐观事务的自动重试。推荐使用[悲观事务模式](/pessimistic-transaction.md)。如果使用乐观事务模式发生冲突,请在应用里捕获错误并重试。 -使用乐观事务模型时,在高冲突率的场景中,事务容易发生写写冲突而导致提交失败。TiDB 和 MySQL 都默认使用[悲观事务模型](/pessimistic-transaction.md),在执行写入类型的 SQL 语句的过程中进行加锁并且在 Repeatable Read 隔离级别下使用了当前读的机制,能够读取到最新的数据,所以提交时一般不会出现异常。为了降低应用改造难度,TiDB 提供了数据库内部自动重试机制。 +使用乐观事务模型时,在高冲突率的场景中,事务容易发生写写冲突而导致提交失败。从 v3.0.8 开始,TiDB 默认使用[悲观事务模型](/pessimistic-transaction.md),与 MySQL 一致。这意味着 TiDB 和 MySQL 在执行写入类型的 SQL 语句的过程中会进行加锁,并且在 Repeatable Read 隔离级别下使用了当前读的机制,能够读取到最新的数据,所以提交时一般不会出现异常。为了降低应用改造难度,TiDB 提供了数据库内部自动重试机制。 ### 重试机制 From ccc4f7fe5cff17b8ce0d73f27f3f2f5e5c609536 Mon Sep 17 00:00:00 2001 From: houfaxin Date: Thu, 16 Oct 2025 21:17:20 +0800 Subject: [PATCH 3/6] Update optimistic-transaction.md --- optimistic-transaction.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/optimistic-transaction.md b/optimistic-transaction.md index dd4b5bb4f250..96d5d22a9bcd 100644 --- a/optimistic-transaction.md +++ b/optimistic-transaction.md @@ -69,10 +69,14 @@ aliases: ['/docs-cn/dev/optimistic-transaction/','/docs-cn/dev/reference/transac > > 从 v8.0.0 开始,[`tidb_disable_txn_auto_retry`](/system-variables.md#tidb_disable_txn_auto_retry) 被废弃,不再支持乐观事务的自动重试。推荐使用[悲观事务模式](/pessimistic-transaction.md)。如果使用乐观事务模式发生冲突,请在应用里捕获错误并重试。 -使用乐观事务模型时,在高冲突率的场景中,事务容易发生写写冲突而导致提交失败。从 v3.0.8 开始,TiDB 默认使用[悲观事务模型](/pessimistic-transaction.md),与 MySQL 一致。这意味着 TiDB 和 MySQL 在执行写入类型的 SQL 语句的过程中会进行加锁,并且在 Repeatable Read 隔离级别下使用了当前读的机制,能够读取到最新的数据,所以提交时一般不会出现异常。为了降低应用改造难度,TiDB 提供了数据库内部自动重试机制。 +使用乐观事务模型时,在高冲突率的场景中,事务容易发生写写冲突而导致提交失败。从 v3.0.8 开始,TiDB 默认使用[悲观事务模型](/pessimistic-transaction.md),与 MySQL 一致。这意味着 TiDB 和 MySQL 在执行写入类型的 SQL 语句的过程中会进行加锁,并且在 Repeatable Read 隔离级别下使用了当前读的机制,能够读取到最新的数据,所以提交时一般不会出现异常。 ### 重试机制 +> **注意:** +> +> 从 TiDB v3.0 开始,事务的自动重试功能默认为禁用状态。不建议开启自动重试功能,因为可能导致事务隔离级别遭到破坏。 + 当事务提交时,如果发现写写冲突,TiDB 内部重新执行包含写操作的 SQL 语句。你可以通过设置 `tidb_disable_txn_auto_retry = OFF` 开启自动重试,并通过 `tidb_retry_limit` 设置重试次数: ```toml From ff14799179a94e1c2b7a933beea3f1fdb4099237 Mon Sep 17 00:00:00 2001 From: houfaxin Date: Thu, 16 Oct 2025 21:52:49 +0800 Subject: [PATCH 4/6] Update optimistic-transaction.md --- optimistic-transaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimistic-transaction.md b/optimistic-transaction.md index 96d5d22a9bcd..8a16c17f04ac 100644 --- a/optimistic-transaction.md +++ b/optimistic-transaction.md @@ -75,7 +75,7 @@ aliases: ['/docs-cn/dev/optimistic-transaction/','/docs-cn/dev/reference/transac > **注意:** > -> 从 TiDB v3.0 开始,事务的自动重试功能默认为禁用状态。不建议开启自动重试功能,因为可能导致事务隔离级别遭到破坏。 +> 从 TiDB v3.0 开始,事务的自动重试功能默认为禁用状态。不建议开启自动重试功能,因为可能导致**事务隔离级别遭到破坏**。 当事务提交时,如果发现写写冲突,TiDB 内部重新执行包含写操作的 SQL 语句。你可以通过设置 `tidb_disable_txn_auto_retry = OFF` 开启自动重试,并通过 `tidb_retry_limit` 设置重试次数: From 7368263f53ba5e79d7862a7cbe3887f0e5691393 Mon Sep 17 00:00:00 2001 From: houfaxin Date: Thu, 16 Oct 2025 22:02:09 +0800 Subject: [PATCH 5/6] Update optimistic-transaction.md --- optimistic-transaction.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/optimistic-transaction.md b/optimistic-transaction.md index 8a16c17f04ac..47cd5afbcee3 100644 --- a/optimistic-transaction.md +++ b/optimistic-transaction.md @@ -75,7 +75,8 @@ aliases: ['/docs-cn/dev/optimistic-transaction/','/docs-cn/dev/reference/transac > **注意:** > -> 从 TiDB v3.0 开始,事务的自动重试功能默认为禁用状态。不建议开启自动重试功能,因为可能导致**事务隔离级别遭到破坏**。 +> - 从 TiDB v3.0.0 开始,事务的自动重试功能默认为禁用状态,因为可能导致**事务隔离级别遭到破坏**。 +> - 从 TiDB v8.0.0 开始,不再支持乐观事务的自动重试。 当事务提交时,如果发现写写冲突,TiDB 内部重新执行包含写操作的 SQL 语句。你可以通过设置 `tidb_disable_txn_auto_retry = OFF` 开启自动重试,并通过 `tidb_retry_limit` 设置重试次数: From 16201cc2a1ceeb3f60cb1a2628f408ba09dfd077 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Fri, 17 Oct 2025 10:19:40 +0800 Subject: [PATCH 6/6] Update wording --- optimistic-transaction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimistic-transaction.md b/optimistic-transaction.md index 47cd5afbcee3..97195d802fb6 100644 --- a/optimistic-transaction.md +++ b/optimistic-transaction.md @@ -75,7 +75,7 @@ aliases: ['/docs-cn/dev/optimistic-transaction/','/docs-cn/dev/reference/transac > **注意:** > -> - 从 TiDB v3.0.0 开始,事务的自动重试功能默认为禁用状态,因为可能导致**事务隔离级别遭到破坏**。 +> - 从 TiDB v3.0.0 开始,事务的自动重试功能默认为禁用状态,因为该功能可能导致**事务隔离级别遭到破坏**。 > - 从 TiDB v8.0.0 开始,不再支持乐观事务的自动重试。 当事务提交时,如果发现写写冲突,TiDB 内部重新执行包含写操作的 SQL 语句。你可以通过设置 `tidb_disable_txn_auto_retry = OFF` 开启自动重试,并通过 `tidb_retry_limit` 设置重试次数: