diff --git a/cached-tables.md b/cached-tables.md index 079dc98a5f35..61bc7a48ab02 100644 --- a/cached-tables.md +++ b/cached-tables.md @@ -167,7 +167,7 @@ SELECT * FROM users; > **注意:** > -> 往缓存表写入数据时,有可能出现秒级别的写入延迟。延迟的时长由全局环境变量 [`tidb_table_cache_lease`](/system-variables.md#tidb_table_cache_lease从-v600-版本开始引入) 控制。你可根据实际业务能否承受此限制带来的延迟,决定是否适合使用缓存表功能。例如,对于完全只读的场景,可以将 `tidb_table_cache_lease` 调大: +> 往缓存表写入数据时,有可能出现秒级别的写入延迟。延迟的时长由全局环境变量 [`tidb_table_cache_lease`](/system-variables.md#tidb_table_cache_lease-从-v600-版本开始引入) 控制。你可根据实际业务能否承受此限制带来的延迟,决定是否适合使用缓存表功能。例如,对于完全只读的场景,可以将 `tidb_table_cache_lease` 调大: > > {{< copyable "sql" >}} > diff --git a/releases/release-6.0.0-dmr.md b/releases/release-6.0.0-dmr.md index 5359ca8e30f6..c245394adcaf 100644 --- a/releases/release-6.0.0-dmr.md +++ b/releases/release-6.0.0-dmr.md @@ -285,16 +285,16 @@ v6.0.0 是 DMR 版本,版本名称为 6.0.0-DMR。 | `placement_checks` | 删除 | 该变量用于控制 DDL 语句是否验证通过 [Placement Rules in SQL](/placement-rules-in-sql.md) 指定的放置规则。已被 `tidb_placement_mode` 替代。 | | `tidb_enable_alter_placement` | 删除 | 该变量用于开启 [Placement Rules in SQL](/placement-rules-in-sql.md)。 | | `tidb_mem_quota_hashjoin`
`tidb_mem_quota_indexlookupjoin`
`tidb_mem_quota_indexlookupreader`
`tidb_mem_quota_mergejoin`
`tidb_mem_quota_sort`
`tidb_mem_quota_topn` | 删除 | 从 TiDB v5.0.0 起,这几个变量被 `tidb_mem_quota_query` 取代并从系统变量文档中移除,为了保证兼容性代码中还保留。从 TiDB v6.0.0 起,代码中也正式移除这些变量。 | -| [`tidb_enable_mutation_checker`](/system-variables.md#tidb_enable_mutation_checker从-v600-版本开始引入) | 新增 | 设置是否开启 mutation checker,默认开启。如果从低于 v6.0.0 的版本升级到 v6.0.0,升级后默认关闭。 | -| [`tidb_ignore_prepared_cache_close_stmt`](/system-variables.md#tidb_ignore_prepared_cache_close_stmt从-v60-版本开始引入) | 新增 | 设置是否忽略关闭 Prepared Statement 的指令,默认值为 `OFF`。 | -| [`tidb_mem_quota_binding_cache`](/system-variables.md#tidb_mem_quota_binding_cache从-v60-版本开始引入) | 新增 | 设置存放 `binding` 的缓存的内存使用阈值,默认值为 `67108864` (64 MiB)。 | -| [`tidb_placement_mode`](/system-variables.md#tidb_placement_mode从-v600-版本开始引入) | 新增 | 控制 DDL 语句是否忽略 [Placement Rules in SQL](/placement-rules-in-sql.md) 指定的放置规则。默认值为 `strict`,表示不忽略。 | -| [`tidb_rc_read_check_ts`](/system-variables.md#tidb_rc_read_check_ts从-v600-版本开始引入) | 新增 | | -| [`tidb_sysdate_is_now`](/system-variables.md#tidb_sysdate_is_now从-v600-版本开始引入) | 新增 | 控制 `SYSDATE` 函数是否替换为 `NOW` 函数,效果与 MySQL 中的 [`sysdate-is-now`](https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_sysdate-is-now) 一致。默认值为 `OFF`。 | -| [`tidb_table_cache_lease`](/system-variables.md#tidb_table_cache_lease从-v600-版本开始引入) | 新增 | 用来控制缓存表(新增 feature)的 lease 时间,默认值是 3 秒。 | +| [`tidb_enable_mutation_checker`](/system-variables.md#tidb_enable_mutation_checker-从-v600-版本开始引入) | 新增 | 设置是否开启 mutation checker,默认开启。如果从低于 v6.0.0 的版本升级到 v6.0.0,升级后默认关闭。 | +| [`tidb_ignore_prepared_cache_close_stmt`](/system-variables.md#tidb_ignore_prepared_cache_close_stmt-从-v600-版本开始引入) | 新增 | 设置是否忽略关闭 Prepared Statement 的指令,默认值为 `OFF`。 | +| [`tidb_mem_quota_binding_cache`](/system-variables.md#tidb_mem_quota_binding_cache-从-v600-版本开始引入) | 新增 | 设置存放 `binding` 的缓存的内存使用阈值,默认值为 `67108864` (64 MiB)。 | +| [`tidb_placement_mode`](/system-variables.md#tidb_placement_mode-从-v600-版本开始引入) | 新增 | 控制 DDL 语句是否忽略 [Placement Rules in SQL](/placement-rules-in-sql.md) 指定的放置规则。默认值为 `strict`,表示不忽略。 | +| [`tidb_rc_read_check_ts`](/system-variables.md#tidb_rc_read_check_ts-从-v600-版本开始引入) | 新增 | | +| [`tidb_sysdate_is_now`](/system-variables.md#tidb_sysdate_is_now-从-v600-版本开始引入) | 新增 | 控制 `SYSDATE` 函数是否替换为 `NOW` 函数,效果与 MySQL 中的 [`sysdate-is-now`](https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_sysdate-is-now) 一致。默认值为 `OFF`。 | +| [`tidb_table_cache_lease`](/system-variables.md#tidb_table_cache_lease-从-v600-版本开始引入) | 新增 | 用来控制缓存表(新增 feature)的 lease 时间,默认值是 3 秒。 | | [`tidb_top_sql_max_meta_count`](/system-variables.md#tidb_top_sql_max_meta_count-从-v600-版本开始引入) | 新增 | 用于控制 [Top SQL](/dashboard/top-sql.md) 每分钟最多收集 SQL 语句类型的数量,默认值为 `5000`。 | | [`tidb_top_sql_max_time_series_count`](/system-variables.md#tidb_top_sql_max_time_series_count-从-v600-版本开始引入) | 新增 | 用于控制 [Top SQL](/dashboard/top-sql.md) 每分钟保留消耗负载最大的前多少条 SQL(即 Top N)的数据,默认值为 `100`。 | -| [`tidb_txn_assertion_level`](/system-variables.md#tidb_txn_assertion_level从-v600-版本开始引入) | 新增 | 设置 assertion 级别,assertion 是一项在事务提交过程中进行的数据索引一致性校验。默认仅开启对性能影响微小的检查,包含大部分检查效果。如果从低于 v6.0.0 的版本升级到 v6.0.0,升级后默认关闭检查。 | +| [`tidb_txn_assertion_level`](/system-variables.md#tidb_txn_assertion_level-从-v600-版本开始引入) | 新增 | 设置 assertion 级别,assertion 是一项在事务提交过程中进行的数据索引一致性校验。默认仅开启对性能影响微小的检查,包含大部分检查效果。如果从低于 v6.0.0 的版本升级到 v6.0.0,升级后默认关闭检查。 | ### 配置文件参数 diff --git a/sql-plan-management.md b/sql-plan-management.md index b46068dea668..e3beec2bb9e0 100644 --- a/sql-plan-management.md +++ b/sql-plan-management.md @@ -83,7 +83,7 @@ USING INSERT /*+ use_index(@sel_1 t2, a) */ INTO t1 SELECT * FROM t2 WHERE a > 1 AND b = 1; ``` -如果在创建执行计划绑定时不指定作用域,隐式作用域 SESSION 会被使用。TiDB 优化器会将被绑定的 SQL 进行“标准化”处理,然后存储到系统表中。在处理 SQL 查询时,只要“标准化”后的 SQL 和系统表中某个被绑定的 SQL 语句一致,并且系统变量 [`tidb_use_plan_baselines`](/system-variables.md#tidb_use_plan_baselines从-v40-版本开始引入) 的值为 `on`(其默认值为 `on`),即可使用相应的优化器 Hint。如果存在多个可匹配的执行计划,优化器会从中选择代价最小的一个进行绑定。 +如果在创建执行计划绑定时不指定作用域,隐式作用域 SESSION 会被使用。TiDB 优化器会将被绑定的 SQL 进行“标准化”处理,然后存储到系统表中。在处理 SQL 查询时,只要“标准化”后的 SQL 和系统表中某个被绑定的 SQL 语句一致,并且系统变量 [`tidb_use_plan_baselines`](/system-variables.md#tidb_use_plan_baselines-从-v40-版本开始引入) 的值为 `on`(其默认值为 `on`),即可使用相应的优化器 Hint。如果存在多个可匹配的执行计划,优化器会从中选择代价最小的一个进行绑定。 `标准化`:把 SQL 中的常量变成变量参数,对空格和换行符等做标准化处理,并对查询引用到的表显式指定数据库。例如: @@ -287,7 +287,7 @@ SHOW [GLOBAL | SESSION] BINDINGS [ShowLikeOrWhere]; ### 对绑定进行缓存 -每个 TiDB 实例都有一个 LRU (Least Recently Used) Cache 对绑定进行缓存,缓存的容量由系统变量 [`tidb_mem_quota_binding_cache`](/system-variables.md#tidb_mem_quota_binding_cache从-v60-版本开始引入) 进行控制。缓存会影响绑定的使用和查看,因此你只能使用和查看存在于缓存中的绑定。 +每个 TiDB 实例都有一个 LRU (Least Recently Used) Cache 对绑定进行缓存,缓存的容量由系统变量 [`tidb_mem_quota_binding_cache`](/system-variables.md#tidb_mem_quota_binding_cache-从-v600-版本开始引入) 进行控制。缓存会影响绑定的使用和查看,因此你只能使用和查看存在于缓存中的绑定。 如需查看绑定的使用情况,可以执行 `SHOW binding_cache status` 语句。该语句无法指定作用域,默认作用域为 GLOBAL。该语句可查看缓存中可用绑定的数量、系统中所有可用绑定的数量、缓存中所有绑定的内存使用量及缓存的内存容量。 diff --git a/sql-prepared-plan-cache.md b/sql-prepared-plan-cache.md index 8c7de6082cfb..b73100d1bd19 100644 --- a/sql-prepared-plan-cache.md +++ b/sql-prepared-plan-cache.md @@ -233,7 +233,7 @@ MySQL [test]> deallocate prepare stmt; -- 再次释放 这样的使用方式会让第一次执行得到的计划被立即清理,不能在第二次被复用。 -为了兼容这样的使用方式,从 v6.0 起,TiDB 支持 [`tidb_ignore_prepared_cache_close_stmt`](/system-variables.md#tidb_ignore_prepared_cache_close_stmt从-v60-版本开始引入) 变量。打开该变量后,TiDB 会忽略关闭 Prepare Statement 的信号,解决上述问题,如: +为了兼容这样的使用方式,从 v6.0 起,TiDB 支持 [`tidb_ignore_prepared_cache_close_stmt`](/system-variables.md#tidb_ignore_prepared_cache_close_stmt-从-v600-版本开始引入) 变量。打开该变量后,TiDB 会忽略关闭 Prepare Statement 的信号,解决上述问题,如: {{< copyable "sql" >}} diff --git a/system-variables.md b/system-variables.md index 33e8d5e6045f..28d1430103e3 100644 --- a/system-variables.md +++ b/system-variables.md @@ -880,7 +880,7 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数 - 默认值:`ON` - 这个变量用来设置是否开启 `LIST (COLUMNS) TABLE PARTITION` 特性。 -### `tidb_enable_mutation_checker`(从 v6.0.0 版本开始引入) +### `tidb_enable_mutation_checker` 从 v6.0.0 版本开始引入 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1296,7 +1296,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 这个变量用来设置并行 hash aggregation 算法 partial 阶段的执行并发度。对于聚合函数参数不为 distinct 的情况,HashAgg 分为 partial 和 final 阶段分别并行执行。 - 默认值 `-1` 表示使用 `tidb_executor_concurrency` 的值。 -### `tidb_ignore_prepared_cache_close_stmt`(从 v6.0 版本开始引入) +### `tidb_ignore_prepared_cache_close_stmt` 从 v6.0.0 版本开始引入 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1472,7 +1472,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 这个变量用来设置 `Apply` 算子中局部 Cache 的内存使用阈值。 - `Apply` 算子中局部 Cache 用来加速 `Apply` 算子的计算,该变量可以设置 `Apply` Cache 的内存使用阈值。设置变量值为 `0` 可以关闭 `Apply` Cache 功能。 -### `tidb_mem_quota_binding_cache`(从 v6.0 版本开始引入) +### `tidb_mem_quota_binding_cache` 从 v6.0.0 版本开始引入 - 作用域:GLOBAL - 是否持久化到集群:是 @@ -1846,7 +1846,7 @@ explain select * from t where age=5; - 默认值:`ON` - 这个变量用于控制是否开启 [ANALYZE 配置持久化](/statistics.md#analyze-配置持久化)特性。 -### `tidb_placement_mode`(从 v6.0.0 版本开始引入) +### `tidb_placement_mode` 从 v6.0.0 版本开始引入 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1904,7 +1904,7 @@ explain select * from t where age=5; - 该变量控制 SQL 语句输出的最大长度。当一条 SQL 语句的输出长度大于 `tidb_query_log_max_len` 时,输出将会被截断。 - 在 v6.1.0 之前这个开关也可以通过 TiDB 配置文件 (`log.query-log-max-len`) 进行配置,升级到 v6.1.0 后仅可通过系统变量配置。 -### `tidb_rc_read_check_ts`(从 v6.0.0 版本开始引入) +### `tidb_rc_read_check_ts` 从 v6.0.0 版本开始引入 > **警告:** > @@ -2184,14 +2184,14 @@ Query OK, 0 rows affected, 1 warning (0.00 sec) - 范围:`[0, 9223372036854775807]` - 这个变量用于限制 TiDB 同时向 TiKV 发送的请求的最大数量,0 表示没有限制。 -### `tidb_sysdate_is_now`(从 v6.0.0 版本开始引入) +### `tidb_sysdate_is_now` 从 v6.0.0 版本开始引入 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 - 默认值:`OFF` - 这个变量用于控制 `SYSDATE` 函数能否替换为 `NOW` 函数,其效果与 MYSQL 中的 [`sysdate-is-now`](https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_sysdate-is-now) 一致。 -### `tidb_table_cache_lease`(从 v6.0.0 版本开始引入) +### `tidb_table_cache_lease` 从 v6.0.0 版本开始引入 - 作用域:GLOBAL - 是否持久化到集群:是 @@ -2240,7 +2240,7 @@ Query OK, 0 rows affected, 1 warning (0.00 sec) > > 如果 PD leader 的 TSO RPC 延迟升高,但其现象并非由 CPU 使用率达到瓶颈而导致(可能存在网络等问题),此时,调高 `tidb_tso_client_batch_max_wait_time` 可能会导致 TiDB 的语句执行延迟上升,影响集群的 QPS 表现。 -### `tidb_txn_assertion_level`(从 v6.0.0 版本开始引入) +### `tidb_txn_assertion_level` 从 v6.0.0 版本开始引入 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -2272,7 +2272,7 @@ Query OK, 0 rows affected, 1 warning (0.00 sec) - 但如果从 3.0.7 及之前的版本升级到 >= 3.0.8 的版本,不会改变默认事务模式,即**只有新创建的集群才会默认使用悲观事务模式**。 - 将该变量设置为 "optimistic" 或 "" 时,将会使用[乐观事务模式](/optimistic-transaction.md)。 -### `tidb_use_plan_baselines`(从 v4.0 版本开始引入) +### `tidb_use_plan_baselines` 从 v4.0 版本开始引入 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 diff --git a/transaction-isolation-levels.md b/transaction-isolation-levels.md index 86766293dc84..4953c9a209dc 100644 --- a/transaction-isolation-levels.md +++ b/transaction-isolation-levels.md @@ -60,13 +60,13 @@ MySQL 可重复读隔离级别在更新时并不检验当前版本是否可见 > > Read Committed 隔离级别仅在[悲观事务模式](/pessimistic-transaction.md)下生效。在[乐观事务模式](/optimistic-transaction.md)下设置事务隔离级别为 Read Committed 将不会生效,事务将仍旧使用可重复读隔离级别。 -从 v6.0.0 版本开始,TiDB 支持使用系统变量 [`tidb_rc_read_check_ts`](/system-variables.md#tidb_rc_read_check_ts从-v600-版本开始引入) 对读写冲突较少情况下优化时间戳的获取。开启此变量后,`SELECT` 语句会尝试使用前一个有效的时间戳进行数据读取,初始值为事务的 `start_ts`。 +从 v6.0.0 版本开始,TiDB 支持使用系统变量 [`tidb_rc_read_check_ts`](/system-variables.md#tidb_rc_read_check_ts-从-v600-版本开始引入) 对读写冲突较少情况下优化时间戳的获取。开启此变量后,`SELECT` 语句会尝试使用前一个有效的时间戳进行数据读取,初始值为事务的 `start_ts`。 - 如果整个读取过程没有遇到更新的数据版本,则返回结果给客户端且 `SELECT` 语句执行成功。 - 如果读取过程中遇到更新的数据版本: - 如果当前 TiDB 尚未向客户端回复数据,则尝试重新获取一个新的时间戳重试此语句。 - 如果 TiDB 已经向客户端返回部分数据,则 TiDB 会向客户端报错。每次向客户端回复的数据量受 `tidb_init_chunk_size` 和 `tidb_max_chunk_size` 控制。 - + 在使用 `READ-COMMITTED` 隔离级别且单个事务中 `SELECT` 语句较多、读写冲突较少的场景,可通过开启此变量来避免获取全局 timestamp 带来的延迟和开销。 ### 与 MySQL Read Committed 隔离级别的区别