From fced84e2886a6bf70408cbbf64d540a1351c889a Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Thu, 18 Aug 2022 15:22:52 +0800 Subject: [PATCH 1/3] This is an automated cherry-pick of #10940 Signed-off-by: ti-chi-bot --- system-variables.md | 94 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/system-variables.md b/system-variables.md index 2493bb38ef0d..8b05552148a9 100644 --- a/system-variables.md +++ b/system-variables.md @@ -325,6 +325,7 @@ mysql> SELECT * FROM t1; > > `max_execution_time` 目前对所有类型的语句生效,并非只对 `SELECT` 语句生效,与 MySQL 不同(只对`SELECT` 语句生效)。实际精度在 100ms 级别,而非更准确的毫秒级别。 +<<<<<<< HEAD ### `max_allowed_packet` 从 v6.1.0 版本开始引入 - 作用域:SESSION | GLOBAL @@ -333,6 +334,39 @@ mysql> SELECT * FROM t1; - 取值范围:`[1024, 1073741824]`,且应当为 1024 的整数倍;若取值无法被 1024 整除,则会提示 warning 并向下取整。例如设置为 1025 时,则 TiDB 中的实际取值为 1024。 - 服务器端和客户端在一次传送数据包的过程中所允许最大的数据包大小,单位为字节。 - 该变量的行为与 MySQL 兼容。 +======= +### `max_prepared_stmt_count` + +- 作用域:GLOBAL +- 是否持久化到集群:是 +- 类型:整数 +- 默认值:`-1` +- 范围:`[-1, 1048576]` +- 指定一个会话中 [`PREPARE`](/sql-statements/sql-statement-prepare.md) 语句的最大数量。 +- 值为 `-1` 时表示不对会话中的 `PREPARE` 语句数量进行限制。 +- 如果将变量值设为超过上限 `1048576`,则使用上限值 `1048576`: + +```sql +mysql> SET GLOBAL max_prepared_stmt_count = 1048577; +Query OK, 0 rows affected, 1 warning (0.01 sec) + +mysql> SHOW WARNINGS; ++---------+------+--------------------------------------------------------------+ +| Level | Code | Message | ++---------+------+--------------------------------------------------------------+ +| Warning | 1292 | Truncated incorrect max_prepared_stmt_count value: '1048577' | ++---------+------+--------------------------------------------------------------+ +1 row in set (0.00 sec) + +mysql> SHOW GLOBAL VARIABLES LIKE 'max_prepared_stmt_count'; ++-------------------------+---------+ +| Variable_name | Value | ++-------------------------+---------+ +| max_prepared_stmt_count | 1048576 | ++-------------------------+---------+ +1 row in set (0.00 sec) +``` +>>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) ### `plugin_dir` @@ -1000,6 +1034,14 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数 - 自 v6.1.0 起,TiDB 的 [Join Reorder 算法](/join-reorder.md) 开始支持 Outer Join。该变量用于控制这个支持行为。默认关闭,即不启用 Outer Join 的 Join Reorder。 - 对于从 v6.1.0 之前版本升级到 v6.1.0 及之后的版本,该变量的默认值为 `OFF`。对于从 v6.1.0 版本升级到之后的版本,该变量默认值为 `ON`。 +### `tidb_enable_ordered_result_mode` + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 默认值:`OFF` +- 指定是否对最终的输出结果进行自动排序。 +- 例如,开启该变量后,TiDB 会将 `SELECT a, MAX(b) FROM t GROUP BY a` 处理为 `SELECT a, MAX(b) FROM t GROUP BY a ORDER BY a, MAX(b)`。 + ### `tidb_enable_paging` 从 v5.4.0 版本开始引入 - 作用域:SESSION | GLOBAL @@ -1616,7 +1658,11 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 默认值:`OFF` - 这个变量用来设置优化器是否执行聚合函数下推到 Join,Projection 和 UnionAll 之前的优化操作。当查询中聚合操作执行很慢时,可以尝试设置该变量为 ON。 +<<<<<<< HEAD ### `tidb_opt_broadcast_cartesian_join` +======= +### `tidb_opt_cartesian_bcj` +>>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1636,7 +1682,11 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 默认值:`3.0` - 表示在 TiDB 中开启一个 Golang goroutine 的 CPU 开销。该变量是[代价模型](/cost-model.md)内部使用的变量,**不建议**修改该变量的值。 +<<<<<<< HEAD ### `tidb_opt_copcpu_factor` +======= +### `tidb_opt_cop_cpu_factor` +>>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1670,7 +1720,11 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 默认值:`3.0` - 表示 TiDB 处理一行数据的 CPU 开销。该变量是[代价模型](/cost-model.md)内部使用的变量,不建议修改该变量的值。 +<<<<<<< HEAD ### `tidb_opt_desc_factor` +======= +### `tidb_opt_desc_scan_factor` +>>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1836,6 +1890,46 @@ explain select * from t where age=5; 3 rows in set (0.00 sec) ``` +<<<<<<< HEAD +======= +### `tidb_opt_projection_push_down` 从 v6.1.0 版本开始引入 + +- 作用域:SESSION +- 是否持久化到集群:否 +- 类型:布尔值 +- 默认值:`OFF` +- 指定是否允许优化器将 `Projection` 算子下推到 TiKV 或者 TiFlash。 + +### `tidb_opt_scan_factor` + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 类型:浮点数 +- 范围:`[0, 2147483647]` +- 默认值:`1.5` +- 表示升序扫描时,TiKV 在磁盘上扫描一行数据的开销。该变量是[代价模型](/cost-model.md)内部使用的变量,**不建议**修改该变量的值。 + +### `tidb_opt_seek_factor` + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 类型:浮点数 +- 范围:`[0, 2147483647]` +- 默认值:`20` +- 表示 TiDB 从 TiKV 请求数据的初始开销。该变量是[代价模型](/cost-model.md)内部使用的变量,**不建议**修改该变量的值。 + +### `tidb_opt_skew_distinct_agg` 从 v6.2.0 版本开始引入 + +> **注意:** +> +> 开启该变量带来的查询性能优化仅对 TiFlash 有效。 + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 默认值:`OFF` +- 这个变量用来设置优化器是否将带有 `DISTINCT` 的聚合函数(例如 `SELECT b, count(DISTINCT a) FROM t GROUP BY b`)改写为两层聚合函数(例如 `SELECT b, count(a) FROM (SELECT b, a FROM t GROUP BY b, a) t GROUP BY b`)。当聚合列有严重的数据倾斜,且 `DISTINCT` 列有很多不同的值时,这种改写能够避免查询执行过程中的数据倾斜,从而提升查询性能。 + +>>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) ### `tidb_opt_write_row_id` - 作用域:SESSION From 8fb5092672db2976f20c79c42fd8e3a9a9c80612 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Fri, 14 Oct 2022 10:32:55 +0800 Subject: [PATCH 2/3] Apply suggestions from code review --- system-variables.md | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/system-variables.md b/system-variables.md index 8b05552148a9..0494a64823e2 100644 --- a/system-variables.md +++ b/system-variables.md @@ -325,7 +325,6 @@ mysql> SELECT * FROM t1; > > `max_execution_time` 目前对所有类型的语句生效,并非只对 `SELECT` 语句生效,与 MySQL 不同(只对`SELECT` 语句生效)。实际精度在 100ms 级别,而非更准确的毫秒级别。 -<<<<<<< HEAD ### `max_allowed_packet` 从 v6.1.0 版本开始引入 - 作用域:SESSION | GLOBAL @@ -334,7 +333,6 @@ mysql> SELECT * FROM t1; - 取值范围:`[1024, 1073741824]`,且应当为 1024 的整数倍;若取值无法被 1024 整除,则会提示 warning 并向下取整。例如设置为 1025 时,则 TiDB 中的实际取值为 1024。 - 服务器端和客户端在一次传送数据包的过程中所允许最大的数据包大小,单位为字节。 - 该变量的行为与 MySQL 兼容。 -======= ### `max_prepared_stmt_count` - 作用域:GLOBAL @@ -366,7 +364,6 @@ mysql> SHOW GLOBAL VARIABLES LIKE 'max_prepared_stmt_count'; +-------------------------+---------+ 1 row in set (0.00 sec) ``` ->>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) ### `plugin_dir` @@ -1658,11 +1655,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 默认值:`OFF` - 这个变量用来设置优化器是否执行聚合函数下推到 Join,Projection 和 UnionAll 之前的优化操作。当查询中聚合操作执行很慢时,可以尝试设置该变量为 ON。 -<<<<<<< HEAD ### `tidb_opt_broadcast_cartesian_join` -======= -### `tidb_opt_cartesian_bcj` ->>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1682,11 +1675,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 默认值:`3.0` - 表示在 TiDB 中开启一个 Golang goroutine 的 CPU 开销。该变量是[代价模型](/cost-model.md)内部使用的变量,**不建议**修改该变量的值。 -<<<<<<< HEAD ### `tidb_opt_copcpu_factor` -======= -### `tidb_opt_cop_cpu_factor` ->>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1720,11 +1709,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 默认值:`3.0` - 表示 TiDB 处理一行数据的 CPU 开销。该变量是[代价模型](/cost-model.md)内部使用的变量,不建议修改该变量的值。 -<<<<<<< HEAD ### `tidb_opt_desc_factor` -======= -### `tidb_opt_desc_scan_factor` ->>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -1890,8 +1875,6 @@ explain select * from t where age=5; 3 rows in set (0.00 sec) ``` -<<<<<<< HEAD -======= ### `tidb_opt_projection_push_down` 从 v6.1.0 版本开始引入 - 作用域:SESSION @@ -1918,18 +1901,6 @@ explain select * from t where age=5; - 默认值:`20` - 表示 TiDB 从 TiKV 请求数据的初始开销。该变量是[代价模型](/cost-model.md)内部使用的变量,**不建议**修改该变量的值。 -### `tidb_opt_skew_distinct_agg` 从 v6.2.0 版本开始引入 - -> **注意:** -> -> 开启该变量带来的查询性能优化仅对 TiFlash 有效。 - -- 作用域:SESSION | GLOBAL -- 是否持久化到集群:是 -- 默认值:`OFF` -- 这个变量用来设置优化器是否将带有 `DISTINCT` 的聚合函数(例如 `SELECT b, count(DISTINCT a) FROM t GROUP BY b`)改写为两层聚合函数(例如 `SELECT b, count(a) FROM (SELECT b, a FROM t GROUP BY b, a) t GROUP BY b`)。当聚合列有严重的数据倾斜,且 `DISTINCT` 列有很多不同的值时,这种改写能够避免查询执行过程中的数据倾斜,从而提升查询性能。 - ->>>>>>> ba24d105b (sysvar: add 12 missing planner sysvars (#10940)) ### `tidb_opt_write_row_id` - 作用域:SESSION From 5a54de1b2328fd8734cfff856b86657a2d7db4d0 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Fri, 14 Oct 2022 10:43:08 +0800 Subject: [PATCH 3/3] Update system-variables.md --- system-variables.md | 1 + 1 file changed, 1 insertion(+) diff --git a/system-variables.md b/system-variables.md index 0494a64823e2..090166bdf0c3 100644 --- a/system-variables.md +++ b/system-variables.md @@ -333,6 +333,7 @@ mysql> SELECT * FROM t1; - 取值范围:`[1024, 1073741824]`,且应当为 1024 的整数倍;若取值无法被 1024 整除,则会提示 warning 并向下取整。例如设置为 1025 时,则 TiDB 中的实际取值为 1024。 - 服务器端和客户端在一次传送数据包的过程中所允许最大的数据包大小,单位为字节。 - 该变量的行为与 MySQL 兼容。 + ### `max_prepared_stmt_count` - 作用域:GLOBAL