Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update tidb-specific-system-variables.md #3159

Merged
merged 9 commits into from
May 23, 2020
265 changes: 239 additions & 26 deletions tidb-specific-system-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,6 @@ set @@global.tidb_distsql_scan_concurrency = 10;

这个变量用来设置当前会话期待读取的历史数据所处时刻。比如当设置为 "2017-11-11 20:20:20" 时或者一个 TSO 数字 "400036290571534337",当前会话将能读取到该时刻的数据。

### tidb_import_data

作用域:SESSION

默认值:0

这个变量用来表示当前状态是否为从 dump 文件中导入数据。
当这个变量被设置为 1 时,唯一索引约束不被检查以加速导入速度。
这个变量不对外用,只是给 lightning 使用,请用户不要自行修改。

### tidb_opt_agg_push_down

作用域:SESSION
Expand Down Expand Up @@ -457,21 +447,6 @@ mysql> desc select count(distinct a) from test.t;

这个变量用来设置是否允许 insert、replace 和 update 操作 `_tidb_rowid` 列,默认是不允许操作。该选项仅用于 TiDB 工具导数据时使用。

### SHARD_ROW_ID_BITS

对于 PK 非整数或没有 PK 的表,TiDB 会使用一个隐式的自增 rowid,大量 `INSERT` 时会把数据集中写入单个 Region,造成写入热点。

通过设置 `SHARD_ROW_ID_BITS`,可以把 rowid 打散写入多个不同的 Region,缓解写入热点问题。但是设置的过大会造成 RPC 请求数放大,增加 CPU 和网络开销。

- `SHARD_ROW_ID_BITS = 4` 表示 16 个分片
- `SHARD_ROW_ID_BITS = 6` 表示 64 个分片
- `SHARD_ROW_ID_BITS = 0` 表示默认值 1 个分片

语句示例:

- `CREATE TABLE`:`CREATE TABLE t (c int) SHARD_ROW_ID_BITS = 4;`
- `ALTER TABLE`:`ALTER TABLE t SHARD_ROW_ID_BITS = 4;`

### tidb_row_format_version

作用域:GLOBAL
Expand All @@ -484,6 +459,22 @@ mysql> desc select count(distinct a) from test.t;

需要注意的是修改该变量不会对已保存的老数据产生影响,只会对修改变量后的新写入数据使用对应版本格式保存。

### tidb_enable_slow_log
jackysp marked this conversation as resolved.
Show resolved Hide resolved

作用域:SESSION

默认值:1

这个变量用于控制是否开启 slow log 功能,默认开启。

### tidb_record_plan_in_slow_log

作用域:SESSION

默认值:1

这个变量用于控制是否在 slow log 里包含慢查询的执行计划。

### tidb_slow_log_threshold

作用域:SESSION
Expand Down Expand Up @@ -717,10 +708,50 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在

作用域:SESSION | GLOBAL

默认值:0
默认值:1(受配置文件影响,这里给出的是默认配置文件取值)

这个变量用来控制是否开启 statement summary 功能。如果开启,SQL 的耗时等执行信息将被记录到系统表 `performance_schema.events_statements_summary_by_digest` 中,用于定位和排查 SQL 性能问题。

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

作用域:SESSION | GLOBAL

默认值: 0(受配置文件影响,这里给出的是默认配置文件取值)

这个变量用来控制是否在 statement summary 中包含 TiDB 内部 SQL 的信息。

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

作用域:SESSION | GLOBAL

默认值: 1800(受配置文件影响,这里给出的是默认配置文件取值)

这个变量设置了 statement summary 的刷新时间,单位为秒。

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

作用域:SESSION | GLOBAL

默认值: 24(受配置文件影响,这里给出的是默认配置文件取值)

这个变量设置了 statement summary 的历史记录容量。

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

作用域:SESSION | GLOBAL

默认值: 200(受配置文件影响,这里给出的是默认配置文件取值)

这个变量设置了 statement summary 在内存中保存的语句的最大数量。

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

作用域:SESSION | GLOBAL

默认值:4096(受配置文件影响,这里给出的是默认配置文件取值)

这个变量控制 statement summary 显示的 SQL 字符串长度。

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

作用域:SESSION
Expand All @@ -736,3 +767,185 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在
默认值:0

这个变量用来显示上一个 `execute` 语句所使用的执行计划是不是直接从 plan cache 中取出来的。

### ddl_slow_threshold

作用域:SESSION

默认值:300

耗时超过该阈值的 ddl 操作会被输出到日志,单位为毫秒。

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

作用域:SESSION

默认值:0

这个变量用来控制是否在 profile 输出中标记出对应的 SQL 语句,用于定位和排查性能问题。

### tidb_skip_isolation_level_check

作用域:SESSION

默认值:0

开启这个开关之后,如果对 `tx_isolation` 赋值一个 TiDB 不支持的隔离级别,不会报错。

### tidb_low_resolution_tso

作用域:SESSION

默认值:0

这个变量用来设置是否启用低精度 tso 特性,开启该功能之后新事务会使用一个每 2s 更新的 ts 来读取数据。

主要场景是在可以容忍读到旧数据的情况下,降低小的只读事务获取 tso 的开销。
bobotu marked this conversation as resolved.
Show resolved Hide resolved

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

作用域:SESSION

默认值: leader

这个变量用于控制 TiDB 读取数据的位置,有以下三个选择:

* leader:只从 leader 节点读取
* follower:只从 follower 节点读取
* leader-and-follower:从 leader 或 follower 节点读取

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

作用域:SESSION | GLOBAL

默认值: on

这个变量用于控制是否开启执行计划绑定功能,默认打开,可通过赋值 off 来关闭。关于执行计划绑定功能的使用可以参考[执行计划绑定文档](/execution-plan-binding.md#创建绑定)。

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

作用域:SESSION | GLOBAL

默认值: off

这个变量用于控制是否开启自动创建绑定功能。该功能依赖 Statement Summary,因此在使用自动绑定之前需打开 Statement Summary 开关。

开启该功能后会定期遍历一次 Statement Summary 中的历史 SQL 语句,并为至少出现两次的 SQL 语句自动创建绑定。

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

作用域:SESSION | GLOBAL

默认值: off

这个变量用于控制是否启用自动演进绑定功能。该功能的详细介绍和使用方法可以参考[自动演进绑定](/execution-plan-binding.md#自动演进绑定)。

为了减少自动演进对集群的影响,可以通过 `tidb_evolve_plan_task_max_time` 来限制每个执行计划运行的最长时间,其默认值为 600s;通过 `tidb_evolve_plan_task_start_time` 和 `tidb_evolve_plan_task_end_time` 可以限制运行演进任务的时间窗口,默认值分别为 `00:00 +0000` 和 `23:59 +0000`。

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

作用域:GLOBAL

默认值:600

该变量用于限制自动演进功能中,每个执行计划运行的最长时间,单位为秒。

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

作用域:GLOBAL

默认值:00:00 +0000

这个变量用来设置一天中允许自动演进的开始时间。

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

作用域:GLOBAL

默认值:23:59 +0000

这个变量用来设置一天中允许自动演进的结束时间。

### tidb_allow_batch_cop <span class="version-mark">从 v4.0 版本开始引入</span>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


作用域:SESSION | GLOBAL

默认值: 0

这个变量用于控制 TiDB 向 TiFlash 发送 coprocessor 请求的方式,有以下几种取值:

* 0:从不批量发送请求
* 1:aggregation 和 join 的请求会进行批量发送
* 2:所有的 cop 请求都会批量发送

### tidb_enable_cascades_planner

作用域:SESSION | GLOBAL

默认值: 0

这个变量用于控制是否开启 cascades planner。

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

作用域:SESSION | GLOBAL

默认值: 4

这个变量用于设置 window 算子的并行度。

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

作用域:SESSION | GLOBAL

默认值: 1

这个变量用于控制是否开启向量化执行。

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

作用域:SESSION | GLOBAL

默认值: 0

这个变量用于控制是否开启 index merge 功能。

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

作用域:SESSION | GLOBAL

默认值: 0

这个变量用于控制是否开启 `get_lock` 和 `release_lock` 这两个没有实现的函数。需要注意的是,当前版本的 TiDB 这两个函数永远返回 1。

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

作用域:SESSION

默认值: tikv, tiflash, tidb

这个变量用于设置 TiDB 在读取数据时可以使用的存储引擎列表。

### tidb_store_limit <span class="version-mark">从 v3.0.4 和 v4.0 版本开始引入</span>

作用域:SESSION | GLOBAL

默认值: 0

这个变量用于限制 TiDB 同时向 TiKV 发送的请求的最大数量,0 表示没有限制。

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

作用域:SESSION

默认值: 60

这个变量设置了查询 METRIC_SCHEMA 时生成的 Prometheus 语句的 step,单位为秒。

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

作用域:SESSION

默认值: 60

这个变量设置了查询 METRIC_SCHEMA 时生成的 Prometheus 语句的 range duration,单位为秒。