Skip to content

Commit 94c2b5e

Browse files
authored
update description of max_execution_time for SELECT FOR UPDATE (#20944)
1 parent 99135fe commit 94c2b5e

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

best-practices/java-app-best-practices.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ TiDB 提供以下与 MySQL 兼容的超时控制参数:
192192

193193
- `wait_timeout`:控制与 Java 应用连接的非交互式空闲超时时间。在 TiDB v5.4 及以上版本中,默认值为 `28800` 秒,即空闲超时为 8 小时。在 v5.4 之前,默认值为 `0`,即没有时间限制。
194194
- `interactive_timeout`:控制与 Java 应用连接的交互式空闲超时时间,默认值为 8 小时。
195-
- `max_execution_time`:控制连接中 SQL 执行的超时时间,仅对“只读”语句生效,默认值是 `0`,即允许连接无限忙碌(一个 SQL 语句执行无限的长的时间)。
195+
- `max_execution_time`:控制连接中 SQL 执行的超时时间,仅对 `SELECT` 语句(包括 `SELECT ... FOR UPDATE`)生效,默认值是 `0`,即允许连接无限忙碌(一个 SQL 语句执行无限的长的时间)。
196196

197197
但在实际生产环境中,空闲连接和一直无限执行的 SQL 对数据库和应用都有不好的影响。你可以通过在应用的连接字符串中配置这两个参数来避免空闲连接和执行时间过长的 SQL 语句。例如,设置 `sessionVariables=wait_timeout=3600`(1 小时)和 `sessionVariables=max_execution_time=300000`(5 分钟)。
198198

develop/dev-guide-connection-parameters.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ UPDATE `t` SET `a` = 12 WHERE `id` = 3;
246246

247247
#### 超时参数
248248

249-
TiDB 提供两个与 MySQL 兼容的超时控制参数,[`wait_timeout`](/system-variables.md#wait_timeout)[`max_execution_time`](/system-variables.md#max_execution_time)。这两个参数分别控制与 Java 应用连接的空闲超时时间和连接中 SQL 执行的超时时间,即控制 TiDB 与 Java 应用的连接最长闲多久和最长忙多久。在 TiDB v5.4 及以上版本中,`wait_timeout` 参数默认值为 `28800` 秒,即空闲超时为 8 小时。在 v5.4 之前,`wait_timeout` 参数的默认值为 `0`,即没有时间限制。 `max_execution_time` 参数的默认值为 `0`,即不限制一条 SQL 语句的执行时间。
249+
TiDB 提供两个与 MySQL 兼容的超时控制参数,[`wait_timeout`](/system-variables.md#wait_timeout)[`max_execution_time`](/system-variables.md#max_execution_time)。这两个参数分别控制与 Java 应用连接的空闲超时时间和连接中 SQL 执行的超时时间,即控制 TiDB 与 Java 应用的连接最长闲多久和最长忙多久。在 TiDB v5.4 及以上版本中,`wait_timeout` 参数默认值为 `28800` 秒,即空闲超时为 8 小时。在 v5.4 之前,`wait_timeout` 参数的默认值为 `0`,即没有时间限制。 `max_execution_time` 参数的默认值为 `0`,即不限制一条 SQL 语句的执行时间,该参数适用于所有 `SELECT` 语句(包括 `SELECT ... FOR UPDATE`
250250

251251
但是 [`wait_timeout`](/system-variables.md#wait_timeout) 的默认值比较大,在事务已启动但未提交或回滚的情况下,你可能需要更细粒度的控制和更短的超时,以避免持有锁的时间过长。此时,你可以使用 TiDB 在 v7.6.0 引入的 [`tidb_idle_transaction_timeout`](/system-variables.md#tidb_idle_transaction_timeout-从-v760-版本开始引入) 控制用户会话中事务的空闲超时。
252252

develop/dev-guide-timeouts-in-tidb.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ TiDB 的事务的实现采用了 MVCC(多版本并发控制)机制,当新
4848

4949
## SQL 执行时间超时
5050

51-
TiDB 还提供了一个系统变量来限制单条 SQL 语句的执行时间,仅对“只读”语句生效`max_execution_time`,它的默认值为 0,表示无限制。`max_execution_time` 的单位为 ms,但实际精度在 100ms 级别,而非更准确的毫秒级别。
51+
TiDB 还提供了一个系统变量来限制单条 SQL 语句的执行时间,仅对 `SELECT` 语句(包括 `SELECT ... FOR UPDATE`)生效`max_execution_time`,它的默认值为 0,表示无限制。`max_execution_time` 的单位为 ms,但实际精度在 100ms 级别,而非更准确的毫秒级别。
5252

5353
## JDBC 查询超时
5454

@@ -62,6 +62,6 @@ TiDB 提供了三个与 MySQL 兼容的超时控制参数:
6262

6363
- **wait_timeout**,控制与 Java 应用连接的非交互式空闲超时时间。在 TiDB v5.4 及以上版本中,默认值为 `28800` 秒,即空闲超时为 8 小时。在 v5.4 之前,默认值为 `0`,即没有时间限制。
6464
- **interactive_timeout**,控制与 Java 应用连接的交互式空闲超时时间,默认值为 8 小时。
65-
- **max_execution_time**,控制连接中 SQL 执行的超时时间,仅对“只读”语句生效,默认值是 0,即允许连接无限忙碌(一个 SQL 语句执行无限的长的时间)。
65+
- **max_execution_time**,控制连接中 SQL 执行的超时时间,仅对 `SELECT` 语句(包括 `SELECT ... FOR UPDATE`)生效,默认值是 0,即允许连接无限忙碌(一个 SQL 语句执行无限的长的时间)。
6666

6767
但在实际生产环境中,空闲连接和一直无限执行的 SQL 对数据库和应用都有不好的影响。你可以通过在应用的连接字符串中配置这两个 session 级的变量来避免空闲连接和执行时间过长的 SQL 语句。例如,设置 `sessionVariables=wait_timeout=3600(1 小时)``sessionVariables=max_execution_time=300000(5 分钟)`

system-variables.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ mysql> SELECT * FROM t1;
619619

620620
> **注意:**
621621
>
622-
> - 在 v6.4.0 之前,`max_execution_time` 对所有类型的语句生效。从 v6.4.0 开始,该变量只用于控制只读语句的最大执行时长。实际精度在 100ms 级别,而非更准确的毫秒级别。
622+
> - 在 v6.4.0 之前,`max_execution_time` 对所有类型的语句生效。从 v6.4.0 开始,该变量仅用于控制 `SELECT` 语句的最长执行时间。实际精度在 100ms 级别,而非更准确的毫秒级别。
623623
> - 对于使用了 [`MAX_EXECUTION_TIME`](/optimizer-hints.md#max_execution_timen) Hint 的 SQL 语句,这些语句的最长执行时间将不受该变量限制,而是由该 Hint 进行限制。你也可以使用该 Hint 来创建 SQL 绑定,详情请参考 [SQL 操作常见问题](/faq/sql-faq.md#如何阻止特定的-sql-语句执行或者将某个-sql-语句加入黑名单)
624624
625625
### `max_prepared_stmt_count`

0 commit comments

Comments
 (0)