From 50b515b5e984a38f8271fa3e51994bdc7f145e61 Mon Sep 17 00:00:00 2001 From: Ti Chi Robot Date: Tue, 17 Oct 2023 20:54:29 +0800 Subject: [PATCH 1/5] This is an automated cherry-pick of #15265 Signed-off-by: ti-chi-bot --- optimizer-hints.md | 16 +++++++++++++++- system-variables.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 7414017fdcf7..d2732253b096 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -935,4 +935,18 @@ CREATE TABLE t1 (a INT); CREATE TABLE t2 (a INT); EXPLAIN SELECT /*+ NO_HASH_JOIN(t1), NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1.a=t2.a; ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query -``` \ No newline at end of file +<<<<<<< HEAD +``` +======= +``` + +- 系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v712-版本开始引入) 设置为 `OFF`,而且其他 Join 方式也都被排除了。 + +```sql +CREATE TABLE t1 (a INT); +CREATE TABLE t2 (a INT); +set tidb_opt_enable_hash_join=off; +EXPLAIN SELECT /*+ NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1.a=t2.a; +ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query +``` +>>>>>>> 2e0ba5b0c2 (sysvar: add system variable `tidb_opt_enable_hash_join` (#15105) (#15265)) diff --git a/system-variables.md b/system-variables.md index 669ad2e24f7b..cceab20e414a 100644 --- a/system-variables.md +++ b/system-variables.md @@ -2464,6 +2464,37 @@ mysql> desc select count(distinct a) from test.t; - 默认值:`ON` - 这个变量用来控制优化器是否开启交叉估算。 +<<<<<<< HEAD +======= +### `tidb_opt_enable_hash_join` 从 v7.1.2 版本开始引入 + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 类型:布尔型 +- 默认值:`ON` +- 控制优化器是否会选择表的哈希连接。默认打开 (`ON`)。设置为 `OFF` 时,优化器在生成执行计划时会避免选择表的哈希连接,除非没有其他连接方式可用。 +- 如果同时使用了 `tidb_opt_enable_hash_join` 和 `HASH_JOIN` Hint,则 `HASH_JOIN` Hint 优先级更高。即使 `tidb_opt_enable_hash_join` 被设置为 `OFF`,如果在查询中指定了 `HASH_JOIN` Hint,TiDB 优化器仍然会强制执行哈希连接计划。 + +### `tidb_opt_enable_late_materialization` 从 v7.0.0 版本开始引入 + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 类型:布尔型 +- 默认值:`ON` +- 这个变量用来控制是否启用 [TiFlash 延迟物化](/tiflash/tiflash-late-materialization.md)功能。注意在 TiFlash [Fast Scan 模式](/tiflash/use-fastscan.md)下,延迟物化功能暂不可用。 +- 当设置该变量为 `OFF` 关闭 TiFlash 延迟物化功能时,如果 `SELECT` 语句中包含过滤条件(`WHERE` 子句),TiFlash 会先扫描查询所需列的全部数据后再进行过滤。当设置该变量为 `ON` 开启 TiFlash 延迟物化功能时,TiFlash 会先扫描下推到 TableScan 算子的过滤条件相关的列数据,过滤得到符合条件的行后,再扫描这些行的其他列数据,继续后续计算,从而减少 IO 扫描和数据处理的计算量。 + +### `tidb_opt_fix_control` 从 v7.1.0 版本开始引入 + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 类型:字符串 +- 默认值:`""` +- 这个变量用来控制优化器的一些内部行为。 +- 一部分优化器行为的选择依赖用户场景或 SQL 编写方式。通过设置该变量,你可以更细粒度地控制优化器的行为,并且避免集群升级后优化器行为变化导致的性能回退。 +- 详细介绍请参考 [Optimizer Fix Controls](/optimizer-fix-controls.md)。 + +>>>>>>> 2e0ba5b0c2 (sysvar: add system variable `tidb_opt_enable_hash_join` (#15105) (#15265)) ### `tidb_opt_force_inline_cte` 从 v6.3.0 版本开始引入 - 作用域:SESSION | GLOBAL From 573e731dc459bc519c4cdcbeb93a7825da8ef3d8 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Fri, 1 Dec 2023 16:33:22 +0800 Subject: [PATCH 2/5] Update optimizer-hints.md --- optimizer-hints.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index d2732253b096..a0b0cd34b0c3 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -935,18 +935,4 @@ CREATE TABLE t1 (a INT); CREATE TABLE t2 (a INT); EXPLAIN SELECT /*+ NO_HASH_JOIN(t1), NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1.a=t2.a; ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query -<<<<<<< HEAD ``` -======= -``` - -- 系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v712-版本开始引入) 设置为 `OFF`,而且其他 Join 方式也都被排除了。 - -```sql -CREATE TABLE t1 (a INT); -CREATE TABLE t2 (a INT); -set tidb_opt_enable_hash_join=off; -EXPLAIN SELECT /*+ NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1.a=t2.a; -ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query -``` ->>>>>>> 2e0ba5b0c2 (sysvar: add system variable `tidb_opt_enable_hash_join` (#15105) (#15265)) From 16f06bd83de93d6bb75830ddd25df8359a60a74f Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Fri, 1 Dec 2023 16:35:50 +0800 Subject: [PATCH 3/5] Update system-variables.md --- system-variables.md | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/system-variables.md b/system-variables.md index cceab20e414a..4873aa18523c 100644 --- a/system-variables.md +++ b/system-variables.md @@ -2464,9 +2464,7 @@ mysql> desc select count(distinct a) from test.t; - 默认值:`ON` - 这个变量用来控制优化器是否开启交叉估算。 -<<<<<<< HEAD -======= -### `tidb_opt_enable_hash_join` 从 v7.1.2 版本开始引入 +### `tidb_opt_enable_hash_join` 从 v6.5.6 版本开始引入 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 @@ -2475,26 +2473,6 @@ mysql> desc select count(distinct a) from test.t; - 控制优化器是否会选择表的哈希连接。默认打开 (`ON`)。设置为 `OFF` 时,优化器在生成执行计划时会避免选择表的哈希连接,除非没有其他连接方式可用。 - 如果同时使用了 `tidb_opt_enable_hash_join` 和 `HASH_JOIN` Hint,则 `HASH_JOIN` Hint 优先级更高。即使 `tidb_opt_enable_hash_join` 被设置为 `OFF`,如果在查询中指定了 `HASH_JOIN` Hint,TiDB 优化器仍然会强制执行哈希连接计划。 -### `tidb_opt_enable_late_materialization` 从 v7.0.0 版本开始引入 - -- 作用域:SESSION | GLOBAL -- 是否持久化到集群:是 -- 类型:布尔型 -- 默认值:`ON` -- 这个变量用来控制是否启用 [TiFlash 延迟物化](/tiflash/tiflash-late-materialization.md)功能。注意在 TiFlash [Fast Scan 模式](/tiflash/use-fastscan.md)下,延迟物化功能暂不可用。 -- 当设置该变量为 `OFF` 关闭 TiFlash 延迟物化功能时,如果 `SELECT` 语句中包含过滤条件(`WHERE` 子句),TiFlash 会先扫描查询所需列的全部数据后再进行过滤。当设置该变量为 `ON` 开启 TiFlash 延迟物化功能时,TiFlash 会先扫描下推到 TableScan 算子的过滤条件相关的列数据,过滤得到符合条件的行后,再扫描这些行的其他列数据,继续后续计算,从而减少 IO 扫描和数据处理的计算量。 - -### `tidb_opt_fix_control` 从 v7.1.0 版本开始引入 - -- 作用域:SESSION | GLOBAL -- 是否持久化到集群:是 -- 类型:字符串 -- 默认值:`""` -- 这个变量用来控制优化器的一些内部行为。 -- 一部分优化器行为的选择依赖用户场景或 SQL 编写方式。通过设置该变量,你可以更细粒度地控制优化器的行为,并且避免集群升级后优化器行为变化导致的性能回退。 -- 详细介绍请参考 [Optimizer Fix Controls](/optimizer-fix-controls.md)。 - ->>>>>>> 2e0ba5b0c2 (sysvar: add system variable `tidb_opt_enable_hash_join` (#15105) (#15265)) ### `tidb_opt_force_inline_cte` 从 v6.3.0 版本开始引入 - 作用域:SESSION | GLOBAL From 59c0375abc4cf85a090014cf0c0e2729e5748f34 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Fri, 1 Dec 2023 16:42:38 +0800 Subject: [PATCH 4/5] Update optimizer-hints.md --- optimizer-hints.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/optimizer-hints.md b/optimizer-hints.md index a0b0cd34b0c3..64cec744d176 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -936,3 +936,12 @@ CREATE TABLE t2 (a INT); EXPLAIN SELECT /*+ NO_HASH_JOIN(t1), NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1.a=t2.a; ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query ``` + +- 系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v656-版本开始引入) 设置为 `OFF`,而且其他 Join 方式也都被排除了。 +```sql +CREATE TABLE t1 (a INT); +CREATE TABLE t2 (a INT); +set tidb_opt_enable_hash_join=off; +EXPLAIN SELECT /*+ NO_MERGE_JOIN(t1) */ * FROM t1, t2 WHERE t1.a=t2.a; +ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query +``` From ad0d444694a9a83c23cfb332a30f69171ccc09a1 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Fri, 1 Dec 2023 16:55:39 +0800 Subject: [PATCH 5/5] Update optimizer-hints.md --- optimizer-hints.md | 1 + 1 file changed, 1 insertion(+) diff --git a/optimizer-hints.md b/optimizer-hints.md index 64cec744d176..9e71efc81fde 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -938,6 +938,7 @@ ERROR 1815 (HY000): Internal : Can't find a proper physical plan for this query ``` - 系统变量 [`tidb_opt_enable_hash_join`](/system-variables.md#tidb_opt_enable_hash_join-从-v656-版本开始引入) 设置为 `OFF`,而且其他 Join 方式也都被排除了。 + ```sql CREATE TABLE t1 (a INT); CREATE TABLE t2 (a INT);