Skip to content

Commit

Permalink
fix version mark (pingcap#11186)
Browse files Browse the repository at this point in the history
  • Loading branch information
Oreoxmt authored Sep 2, 2022
1 parent 39868fa commit ff7afa7
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 23 deletions.
2 changes: 1 addition & 1 deletion cached-tables.md
Original file line number Diff line number Diff line change
Expand Up @@ -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" >}}
>
Expand Down
16 changes: 8 additions & 8 deletions releases/release-6.0.0-dmr.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`<br/>`tidb_mem_quota_indexlookupjoin`<br/>`tidb_mem_quota_indexlookupreader` <br/>`tidb_mem_quota_mergejoin`<br/>`tidb_mem_quota_sort`<br/>`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-版本开始引入) | 新增 | <ul><li> 优化事务内读语句延迟。如果读写冲突较为严重,开启此变量会增加额外开销和延迟,造成性能回退。默认关闭。</li><li>该变量与 [replica-read](/system-variables.md#tidb_replica_read-从-v40-版本开始引入) 尚不兼容,开启 `tidb_rc_read_check_ts` 的读请求无法使用 [replica-read](/system-variables.md#tidb_replica_read-从-v40-版本开始引入),请勿同时开启两个变量。</li></ul> |
| [`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-版本开始引入) | 新增 | <ul><li> 优化事务内读语句延迟。如果读写冲突较为严重,开启此变量会增加额外开销和延迟,造成性能回退。默认关闭。</li><li>该变量与 [replica-read](/system-variables.md#tidb_replica_read-从-v40-版本开始引入) 尚不兼容,开启 `tidb_rc_read_check_ts` 的读请求无法使用 [replica-read](/system-variables.md#tidb_replica_read-从-v40-版本开始引入),请勿同时开启两个变量。</li></ul> |
| [`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,升级后默认关闭检查。 |

### 配置文件参数

Expand Down
4 changes: 2 additions & 2 deletions sql-plan-management.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 中的常量变成变量参数,对空格和换行符等做标准化处理,并对查询引用到的表显式指定数据库。例如:

Expand Down Expand Up @@ -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。该语句可查看缓存中可用绑定的数量、系统中所有可用绑定的数量、缓存中所有绑定的内存使用量及缓存的内存容量。

Expand Down
2 changes: 1 addition & 1 deletion sql-prepared-plan-cache.md
Original file line number Diff line number Diff line change
Expand Up @@ -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" >}}

Expand Down
18 changes: 9 additions & 9 deletions system-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -880,7 +880,7 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数
- 默认值:`ON`
- 这个变量用来设置是否开启 `LIST (COLUMNS) TABLE PARTITION` 特性。
### `tidb_enable_mutation_checker`从 v6.0.0 版本开始引入
### `tidb_enable_mutation_checker` <span class="version-mark">从 v6.0.0 版本开始引入</span>
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
Expand Down Expand Up @@ -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` <span class="version-mark">从 v6.0.0 版本开始引入</span>
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
Expand Down Expand Up @@ -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` <span class="version-mark">从 v6.0.0 版本开始引入</span>
- 作用域:GLOBAL
- 是否持久化到集群:是
Expand Down Expand Up @@ -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` <span class="version-mark">从 v6.0.0 版本开始引入</span>
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
Expand Down Expand Up @@ -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` <span class="version-mark">从 v6.0.0 版本开始引入</span>
> **警告:**
>
Expand Down Expand Up @@ -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` <span class="version-mark">从 v6.0.0 版本开始引入</span>
- 作用域: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` <span class="version-mark">从 v6.0.0 版本开始引入</span>
- 作用域:GLOBAL
- 是否持久化到集群:是
Expand Down Expand Up @@ -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` <span class="version-mark">从 v6.0.0 版本开始引入</span>
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
Expand Down Expand Up @@ -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` <span class="version-mark">从 v4.0 版本开始引入</span>
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
Expand Down
4 changes: 2 additions & 2 deletions transaction-isolation-levels.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 隔离级别的区别
Expand Down

0 comments on commit ff7afa7

Please sign in to comment.