Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 79 additions & 5 deletions system-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,16 @@ mysql> SHOW GLOBAL VARIABLES LIKE 'max_prepared_stmt_count';
- 默认值:`ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION`
- 这个变量控制许多 MySQL 兼容行为。详情见 [SQL 模式](/sql-mode.md)。

### `sql_require_primary_key` <span class="version-mark">从 v6.3.0 版本开始引入</span>

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:`OFF`
- 这个变量用于控制表是否必须有主键。启用该变量后,如果在没有主键的情况下创建或修改表,将返回错误。
- 该功能基于 MySQL 8.0 的特性 [`sql_require_primary_key`](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_sql_require_primary_key)。
- 强烈推荐在使用 TiCDC 时启用改变量,因为同步数据变更至 MySQL sink 时要求表必须有主键。

### `sql_select_limit` <span class="version-mark">从 v4.0.2 版本开始引入</span>

- 作用域:SESSION | GLOBAL
Expand Down Expand Up @@ -697,6 +707,18 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数
- 范围:`[0, 9223372036854775807]`
- 这个变量用来控制 DDL 操作失败重试的次数。失败重试次数超过该参数的值后,会取消出错的 DDL 操作。

### `tidb_ddl_flashback_concurrency` <span class="version-mark">从 v6.3.0 版本开始引入</span>

> **警告:**
>
> 当前版本中该变量控制的功能尚未完全生效,请保留默认值。

- 作用域:GLOBAL
- 是否持久化到集群:是
- 默认值:`64`
- 范围:`[1, 256]`
- 这个变量用来控制 `flashback cluster` 的并发数。
Comment thread
shichun-0415 marked this conversation as resolved.

### `tidb_ddl_reorg_batch_size`

- 作用域:GLOBAL
Expand Down Expand Up @@ -949,6 +971,28 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数
- 这个变量用来控制是否启用统计信息快速分析功能。默认值 0 表示不开启。
- 快速分析功能开启后,TiDB 会随机采样约 10000 行的数据来构建统计信息。因此在数据分布不均匀或者数据量比较少的情况下,统计信息的准确度会比较低。这可能导致执行计划不优,比如选错索引。如果可以接受普通 `ANALYZE` 语句的执行时间,则推荐关闭快速分析功能。

### `tidb_enable_foreign_key` <span class="version-mark">从 v6.3.0 版本开始引入</span>
Comment thread
shichun-0415 marked this conversation as resolved.

> **警告:**
>
> 当前版本中该变量控制的功能尚未完全生效,请保留默认值。

- 作用域:GLOBAL
- 是否持久化到集群:是
- 默认值:`OFF`
- 这个变量用于控制是否开启 `FOREIGN KEY` 特性。

### `tidb_enable_general_plan_cache` <span class="version-mark">从 v6.3.0 版本开始引入</span>
Comment thread
shichun-0415 marked this conversation as resolved.

> **警告:**
>
> 当前版本中该变量控制的功能尚未完全生效,请保留默认值。

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:`OFF`
- 这个变量用来控制是否开启 General Plan Cache。

Comment thread
shichun-0415 marked this conversation as resolved.
### `tidb_enable_index_merge` <span class="version-mark">从 v4.0 版本开始引入</span>

> **注意:**
Expand Down Expand Up @@ -1024,6 +1068,13 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数
* 使用 `SELECT` 读取 `noop` 的系统变量时会报 `"variable *variable_name* has no effect in TiDB"` 的警告。
- 你可以通过 `SELECT * FROM INFORMATION_SCHEMA.CLIENT_ERRORS_SUMMARY_GLOBAL;` 语句来检查 TiDB 实例是否曾设置和读取 `noop` 系统变量。

### `tidb_enable_null_aware_anti_join` <span class="version-mark">从 v6.3.0 版本开始引入</span>
Comment thread
shichun-0415 marked this conversation as resolved.

- 作用域:SESSION |GLOBAL
- 是否持久化到集群:是
- 默认值:`OFF`
- 这个变量用于控制 TiDB 对特殊集合算子 `NOT IN` 和 `!= ALL` 引导的子查询产生的 ANTI JOIN 是否采用 Null Aware Hash Join 的执行方式。

### `tidb_enable_outer_join_reorder` <span class="version-mark">从 v6.1.0 版本开始引入</span>

- 作用域:SESSION | GLOBAL
Expand Down Expand Up @@ -1138,6 +1189,17 @@ Query OK, 0 rows affected (0.09 sec)
- 默认值:`ON`
- 这个变量用于动态地控制 TiDB 遥测功能是否开启。设置为 `OFF` 可以关闭 TiDB 遥测功能。当所有 TiDB 实例都设置 [`enable-telemetry`](/tidb-configuration-file.md#enable-telemetry-从-v402-版本开始引入) 为 `false` 时将忽略该系统变量并总是关闭 TiDB 遥测功能。参阅[遥测](/telemetry.md)了解该功能详情。

### `tidb_enable_tiflash_read_for_write_stmt` <span class="version-mark">从 v6.3.0 版本开始引入</span>
Comment thread
gengliqi marked this conversation as resolved.

> **警告:**
>
> 当前版本中该变量控制的功能尚未完全生效,请保留默认值。

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:`OFF`
- 这个变量用于控制写 SQL 中的读取是否会下推到 TiFlash。

### `tidb_enable_top_sql` <span class="version-mark">从 v5.4.0 版本开始引入</span>

> **警告:**
Expand Down Expand Up @@ -1364,11 +1426,23 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告)
- `txn_mode`:事务模式。可选值:`OPTIMISTIC`(乐观事务模式),或 `PESSIMISTIC`(悲观事务模式)
- `sql`:当前查询对应的 SQL 语句

### `tidb_general_plan_cache_size` <span class="version-mark">从 v6.3.0 版本开始引入</span>
Comment thread
shichun-0415 marked this conversation as resolved.

> **警告:**
>
> 当前版本中该变量控制的功能尚未完全生效,请保留默认值。

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:`100`
- 范围:`[1, 100000]`
- 这个变量用来控制 General Plan Cache 最多能够缓存的计划数量。

Comment thread
shichun-0415 marked this conversation as resolved.
### `tidb_guarantee_linearizability` <span class="version-mark">从 v5.0 版本开始引入</span>

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔值
- 类型:布尔型
- 默认值:`OFF`
- 此变量控制异步提交 (Async Commit) 中提交时间戳的计算方式。默认情况下(使用 `OFF` 值),两阶段提交从 PD 服务器请求一个新的时间戳,并使用该时间戳计算最终提交的时间戳,这样可保证所有并发事务可线性化。
- 如果将该变量值设为 `ON`,从 PD 获取的时间戳的操作会被省掉,这种情况下只保证因果一致性但不保证线性一致性。详情请参考 PingCAP 博文 [Async Commit 原理介绍](https://pingcap.com/zh/blog/async-commit-principle)。
Expand Down Expand Up @@ -1878,7 +1952,7 @@ mysql> desc select count(distinct a) from test.t;

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔值
- 类型:布尔型
- 默认值:`ON`
- 当该变量值为 `ON` 时,左连接始终使用内表作为构建端,右连接始终使用外表作为构建端。将该变量值设为 `OFF` 后,外连接可以灵活选择任意一边表作为构建端。

Expand Down Expand Up @@ -1927,7 +2001,7 @@ explain select * from t where age=5;

- 作用域:SESSION
- 是否持久化到集群:否
- 类型:布尔值
- 类型:布尔型
- 默认值:`OFF`
- 指定是否允许优化器将 `Projection` 算子下推到 TiKV 或者 TiFlash。

Expand Down Expand Up @@ -2124,7 +2198,7 @@ explain select * from t where age=5;

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔值
- 类型:布尔型
- 默认值:`OFF`
- 指定是否在子查询中移除 `ORDER BY` 子句。

Expand Down Expand Up @@ -2389,7 +2463,7 @@ Query OK, 0 rows affected, 1 warning (0.00 sec)

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔值
- 类型:布尔型
- 默认值:`ON`
- 本变量控制 TiDB 是否跟踪聚合函数的内存使用情况。

Expand Down