From f010347a4d89eb84229f40b6b7a3b37da5c10d38 Mon Sep 17 00:00:00 2001 From: Zejun Li Date: Wed, 20 May 2020 13:48:27 +0800 Subject: [PATCH 1/6] Update tidb-specific-system-variables.md --- tidb-specific-system-variables.md | 236 ++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) diff --git a/tidb-specific-system-variables.md b/tidb-specific-system-variables.md index ace30d7b410d..60cd54cbcee5 100644 --- a/tidb-specific-system-variables.md +++ b/tidb-specific-system-variables.md @@ -484,6 +484,22 @@ mysql> desc select count(distinct a) from test.t; 需要注意的是修改该变量不会对已保存的老数据产生影响,只会对修改变量后的新写入数据使用对应版本格式保存。 +### tidb_enable_slow_log + +作用域:SESSION + +默认值:1 + +这个变量用于控制是否开启 slow log 功能。 + +### tidb_record_plan_in_slow_log + +作用域:SESSION + +默认值:1 + +这个变量用于控制是否在 slow log 里包含慢查询的执行计划。 + ### tidb_slow_log_threshold 作用域:SESSION @@ -721,6 +737,38 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 这个变量用来控制是否开启 statement summary 功能。如果开启,SQL 的耗时等执行信息将被记录到系统表 `performance_schema.events_statements_summary_by_digest` 中,用于定位和排查 SQL 性能问题。 +### tidb_stmt_summary_internal_query 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 0 + +这个变量用来控制是否在 statement summary 中包含 TiDB 内部 SQL 的信息。 + +### tidb_stmt_summary_refresh_interval 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 1800 + +这个变量设置了 statement summary 的刷新时间,单位为秒。 + +### tidb_stmt_summary_history_size 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 24 + +这个变量设置了 statement summary 的历史记录容量。 + +### tidb_stmt_summary_max_stmt_count 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 200 + +这个变量设置了 statement summary 在内存中保存的语句的最大数量。 + ### tidb_enable_chunk_rpc 从 v4.0 版本开始引入 作用域:SESSION @@ -736,3 +784,191 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 默认值:0 这个变量用来显示上一个 `execute` 语句所使用的执行计划是不是直接从 plan cache 中取出来的。 + +### ddl_slow_threshold + +作用域:SESSION + +默认值:300 + +耗时超过该阈值的 ddl 操作会被输出到日志,单位为毫秒。 + +### tidb_pprof_sql_cpu 从 v4.0 版本开始引入 + +作用域:SESSION + +默认值:0 + +这个变量用来控制是否在 profile 输出中标记出对应的 SQL 语句,用于定位和排查性能问题。 + +### tidb_skip_isolation_level_check + +作用域:SESSION + +默认值:0 + +开启这个开关之后对 tx_isolation 赋值一个 TiDB 不支持的隔离级别不会报错。 + +### tidb_low_resolution_tso + +作用域:SESSION + +默认值:0 + +这个变量用来设置是否启用低精度 tso 特性,开启该功能之后新事务会使用一个每 2s 更新的 ts 来读取数据。 +主要场景是在可以容忍读到旧数据的情况下,降低小的只读事务获取 tso 的开销。 + +### tidb_replica_read 从 v4.0 版本开始引入 + +作用域:SESSION + +默认值: leader + +这个变量用于控制 TiDB 读取数据的位置,有以下三个选择 + +* leader:只从 leader 节点读取 +* follower:只从 follower 节点读取 +* leader-and-follower:从 leader 或 follower 节点读取 + +### tidb_use_plan_baselines 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: on + +这个变量用于控制是否开启执行计划绑定功能。关于执行计划绑定功能的使用可以参考[执行计划绑定文档](/execution-plan-binding.md#创建绑定) + +### tidb_capture_plan_baselines 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: off + +这个变量用于控制是否开启打开自动创建绑定功能。该功能依赖 statement summary,因此在使用自动绑定之前需打开 Statement Summary 开关。 +开启该功能后会定期遍历一次 statement summary 中的历史 SQL 语句,并为至少出现两次的 SQL 语句自动创建绑定。 + +### tidb_evolve_plan_baselines 从 v4.0 版本开始引入 + +作用域: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 从 v4.0 版本开始引入 + +作用域:GLOBAL + +默认值:600 + +该变量用于限制自动演进功能中,每个执行计划运行的最长时间,单位为秒。 + +### tidb_evolve_plan_task_start_time 从 v4.0 版本开始引入 + +作用域:GLOBAL + +默认值:00:00 +0000 + +这个变量用来设置一天中允许自动演进的开始时间。 + +### tidb_evolve_plan_task_end_time 从 v4.0 版本开始引入 + +作用域:GLOBAL + +默认值:23:59 +0000 + +这个变量用来设置一天中允许自动演进的结束时间。 + +### tidb_allow_batch_cop 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 0 + +这个变量用于控制 TiDB 向 TiFlash 发送 coprocessor 请求的方式,有以下几种取值: + +* 0:从不批量发送请求 +* 1:aggregation 和 join 的请求会进行批量发送 +* 2:所有的 cop 请求都会批量发送 + +### tidb_enable_cascades_planner + +作用域:SESSION | GLOBAL + +默认值: 0 + +这个变量用于控制是否开启 cascades planner。 + +### tidb_window_concurrency 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 4 + +这个变量用于设置 window 算子的并行度。 + +### tidb_enable_radix_join + +作用域:SESSION + +默认值: 0 + +这个变量用于控制是否开启 radix join。 + +### tidb_enable_vectorized_expression 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 1 + +这个变量用于控制是否开启向量化执行。 + +### tidb_enable_index_merge 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 0 + +这个变量用于控制是否开启 index merge 功能 + +### tidb_enable_noop_functions 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 0 + +这个变量用于控制是否开启 `get_lock` 和 `release_lock` 这两个没有实现的函数。需要注意的是,当前版本的 TiDB 这两个函数永远返回 1。 + +### tidb_isolation_read_engines 从 v4.0 版本开始引入 + +作用域:SESSION + +默认值: tikv, tiflash, tidb + +这个变量用于设置 TiDB 在读取数据时可以使用的存储引擎列表。 + +### tidb_store_limit 从 v3.0.4 和 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值: 0 + +这个变量用于限制 TiDB 同时向 TiKV 发送的请求的最大数量,0 表示没有限制。 + +### tidb_metric_query_step 从 v4.0 版本开始引入 + +作用域:SESSION + +默认值: 60 + +这个变量设置了查询 METRIC_SCHEMA 时生成的 Prometheus 语句的 step,单位为秒。 + +### tidb_metric_query_range_duration 从 v4.0 版本开始引入 + +作用域:SESSION + +默认值: 60 + +这个变量设置了查询 METRIC_SCHEMA 时生成的 Prometheus 语句的 range duration,单位为秒。 From a7b99b20cdcef6a723b654dba8f6bd6ee34e4d58 Mon Sep 17 00:00:00 2001 From: Zejun Li Date: Wed, 20 May 2020 14:41:59 +0800 Subject: [PATCH 2/6] remove tidb_enable_radix_join --- tidb-specific-system-variables.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tidb-specific-system-variables.md b/tidb-specific-system-variables.md index 60cd54cbcee5..f1e786275b21 100644 --- a/tidb-specific-system-variables.md +++ b/tidb-specific-system-variables.md @@ -909,14 +909,6 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 这个变量用于设置 window 算子的并行度。 -### tidb_enable_radix_join - -作用域:SESSION - -默认值: 0 - -这个变量用于控制是否开启 radix join。 - ### tidb_enable_vectorized_expression 从 v4.0 版本开始引入 作用域:SESSION | GLOBAL From 63a7db0de412097d5ce8b8020d0ad4df233a1493 Mon Sep 17 00:00:00 2001 From: Zejun Li Date: Thu, 21 May 2020 10:56:42 +0800 Subject: [PATCH 3/6] Apply suggestions from code review Co-authored-by: Ran --- tidb-specific-system-variables.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tidb-specific-system-variables.md b/tidb-specific-system-variables.md index f1e786275b21..3fedb79654be 100644 --- a/tidb-specific-system-variables.md +++ b/tidb-specific-system-variables.md @@ -807,7 +807,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 默认值:0 -开启这个开关之后对 tx_isolation 赋值一个 TiDB 不支持的隔离级别不会报错。 +开启这个开关之后,如果对 `tx_isolation` 赋值一个 TiDB 不支持的隔离级别,不会报错。 ### tidb_low_resolution_tso @@ -816,6 +816,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 默认值:0 这个变量用来设置是否启用低精度 tso 特性,开启该功能之后新事务会使用一个每 2s 更新的 ts 来读取数据。 + 主要场景是在可以容忍读到旧数据的情况下,降低小的只读事务获取 tso 的开销。 ### tidb_replica_read 从 v4.0 版本开始引入 @@ -824,7 +825,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 默认值: leader -这个变量用于控制 TiDB 读取数据的位置,有以下三个选择 +这个变量用于控制 TiDB 读取数据的位置,有以下三个选择: * leader:只从 leader 节点读取 * follower:只从 follower 节点读取 @@ -844,8 +845,9 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 默认值: off -这个变量用于控制是否开启打开自动创建绑定功能。该功能依赖 statement summary,因此在使用自动绑定之前需打开 Statement Summary 开关。 -开启该功能后会定期遍历一次 statement summary 中的历史 SQL 语句,并为至少出现两次的 SQL 语句自动创建绑定。 +这个变量用于控制是否开启自动创建绑定功能。该功能依赖 Statement Summary,因此在使用自动绑定之前需打开 Statement Summary 开关。 + +开启该功能后会定期遍历一次 Statement Summary 中的历史 SQL 语句,并为至少出现两次的 SQL 语句自动创建绑定。 ### tidb_evolve_plan_baselines 从 v4.0 版本开始引入 @@ -853,9 +855,9 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 默认值: off -这个变量用于控制是否启用自动演进绑定功能。该功能的详细介绍和使用方法可以参考[自动演进绑定文档](/execution-plan-binding.md#自动演进绑定) +这个变量用于控制是否启用自动演进绑定功能。该功能的详细介绍和使用方法可以参考[自动演进绑定](/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` 来限制每个执行计划运行的最长时间,其默认值为 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 从 v4.0 版本开始引入 @@ -923,7 +925,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 默认值: 0 -这个变量用于控制是否开启 index merge 功能 +这个变量用于控制是否开启 index merge 功能。 ### tidb_enable_noop_functions 从 v4.0 版本开始引入 From 0da540782a217347d4d53d96f1e828dcd14dbd94 Mon Sep 17 00:00:00 2001 From: Zejun Li Date: Thu, 21 May 2020 11:00:08 +0800 Subject: [PATCH 4/6] address comments --- tidb-specific-system-variables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tidb-specific-system-variables.md b/tidb-specific-system-variables.md index 3fedb79654be..eb66b757139a 100644 --- a/tidb-specific-system-variables.md +++ b/tidb-specific-system-variables.md @@ -490,7 +490,7 @@ mysql> desc select count(distinct a) from test.t; 默认值:1 -这个变量用于控制是否开启 slow log 功能。 +这个变量用于控制是否开启 slow log 功能,默认开启。 ### tidb_record_plan_in_slow_log @@ -837,7 +837,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 默认值: on -这个变量用于控制是否开启执行计划绑定功能。关于执行计划绑定功能的使用可以参考[执行计划绑定文档](/execution-plan-binding.md#创建绑定) +这个变量用于控制是否开启执行计划绑定功能,默认打开,可通过赋值 off 来关闭。关于执行计划绑定功能的使用可以参考[执行计划绑定文档](/execution-plan-binding.md#创建绑定)。 ### tidb_capture_plan_baselines 从 v4.0 版本开始引入 From aa0bcdeaacb4ab0a75be05136971c769ae966b6f Mon Sep 17 00:00:00 2001 From: Zejun Li Date: Thu, 21 May 2020 19:28:14 +0800 Subject: [PATCH 5/6] remove unused vars and add a missing one --- tidb-specific-system-variables.md | 43 ++++++++++--------------------- 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/tidb-specific-system-variables.md b/tidb-specific-system-variables.md index eb66b757139a..77961d52df64 100644 --- a/tidb-specific-system-variables.md +++ b/tidb-specific-system-variables.md @@ -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 @@ -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 @@ -733,7 +708,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值:0 +默认值:1 (受配置文件影响,这里给出的是默认配置文件取值) 这个变量用来控制是否开启 statement summary 功能。如果开启,SQL 的耗时等执行信息将被记录到系统表 `performance_schema.events_statements_summary_by_digest` 中,用于定位和排查 SQL 性能问题。 @@ -741,7 +716,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值: 0 +默认值: 0 (受配置文件影响,这里给出的是默认配置文件取值) 这个变量用来控制是否在 statement summary 中包含 TiDB 内部 SQL 的信息。 @@ -749,7 +724,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值: 1800 +默认值: 1800 (受配置文件影响,这里给出的是默认配置文件取值) 这个变量设置了 statement summary 的刷新时间,单位为秒。 @@ -757,7 +732,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值: 24 +默认值: 24 (受配置文件影响,这里给出的是默认配置文件取值) 这个变量设置了 statement summary 的历史记录容量。 @@ -765,10 +740,18 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值: 200 +默认值: 200 (受配置文件影响,这里给出的是默认配置文件取值) 这个变量设置了 statement summary 在内存中保存的语句的最大数量。 +### tidb_stmt_summary_max_sql_length 从 v4.0 版本开始引入 + +作用域:SESSION | GLOBAL + +默认值:4096 (受配置文件影响,这里给出的是默认配置文件取值) + +这个变量控制 statement summary 显示的 SQL 字符串长度。 + ### tidb_enable_chunk_rpc 从 v4.0 版本开始引入 作用域:SESSION From a76f81f34201d3b001bfd319e5c7d278d434e3ea Mon Sep 17 00:00:00 2001 From: Ran Date: Thu, 21 May 2020 22:14:32 +0800 Subject: [PATCH 6/6] fix wrong punctuation --- tidb-specific-system-variables.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tidb-specific-system-variables.md b/tidb-specific-system-variables.md index 77961d52df64..b3ef6c456fb6 100644 --- a/tidb-specific-system-variables.md +++ b/tidb-specific-system-variables.md @@ -708,7 +708,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值:1 (受配置文件影响,这里给出的是默认配置文件取值) +默认值:1(受配置文件影响,这里给出的是默认配置文件取值) 这个变量用来控制是否开启 statement summary 功能。如果开启,SQL 的耗时等执行信息将被记录到系统表 `performance_schema.events_statements_summary_by_digest` 中,用于定位和排查 SQL 性能问题。 @@ -716,7 +716,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值: 0 (受配置文件影响,这里给出的是默认配置文件取值) +默认值: 0(受配置文件影响,这里给出的是默认配置文件取值) 这个变量用来控制是否在 statement summary 中包含 TiDB 内部 SQL 的信息。 @@ -724,7 +724,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值: 1800 (受配置文件影响,这里给出的是默认配置文件取值) +默认值: 1800(受配置文件影响,这里给出的是默认配置文件取值) 这个变量设置了 statement summary 的刷新时间,单位为秒。 @@ -732,7 +732,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值: 24 (受配置文件影响,这里给出的是默认配置文件取值) +默认值: 24(受配置文件影响,这里给出的是默认配置文件取值) 这个变量设置了 statement summary 的历史记录容量。 @@ -740,7 +740,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值: 200 (受配置文件影响,这里给出的是默认配置文件取值) +默认值: 200(受配置文件影响,这里给出的是默认配置文件取值) 这个变量设置了 statement summary 在内存中保存的语句的最大数量。 @@ -748,7 +748,7 @@ TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在 作用域:SESSION | GLOBAL -默认值:4096 (受配置文件影响,这里给出的是默认配置文件取值) +默认值:4096(受配置文件影响,这里给出的是默认配置文件取值) 这个变量控制 statement summary 显示的 SQL 字符串长度。