From 3f2e78847ffa69433f3b1228c7c2ef97ca72e975 Mon Sep 17 00:00:00 2001 From: Ti Chi Robot Date: Wed, 31 Dec 2025 13:40:02 +0800 Subject: [PATCH 01/23] v8.5.4 tikv: update rocksdb.max-manifest-file-size default value (#20846) (#21227) --- releases/release-8.5.4.md | 2 ++ tikv-configuration-file.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/releases/release-8.5.4.md b/releases/release-8.5.4.md index c47266728d77..81ee1d53133d 100644 --- a/releases/release-8.5.4.md +++ b/releases/release-8.5.4.md @@ -80,6 +80,8 @@ TiDB 版本:8.5.4 - 废弃配置项:[`region-compact-check-interval`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-check-interval)、[`region-compact-check-step`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-check-step)、[`region-compact-min-tombstones`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-min-tombstones)、[`region-compact-tombstones-percent`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-tombstones-percent)、[`region-compact-min-redundant-rows`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-min-redundant-rows-从-v710-版本开始引入) 和 [`region-compact-redundant-rows-percent`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-redundant-rows-percent-从-v710-版本开始引入)。 - 新增配置项:[`gc.auto-compaction.check-interval`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#check-interval-从-v757-和-v854-版本开始引入)、[`gc.auto-compaction.tombstone-num-threshold`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#tombstone-num-threshold-从-v757-和-v854-版本开始引入)、[`gc.auto-compaction.tombstone-percent-threshold`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#tombstone-percent-threshold-从-v757-和-v854-版本开始引入)、[`gc.auto-compaction.redundant-rows-threshold`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#redundant-rows-threshold-从-v757-和-v854-版本开始引入)、[`gc.auto-compaction.redundant-rows-percent-threshold`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#redundant-rows-percent-threshold-从-v757-和-v854-版本开始引入) 和 [`gc.auto-compaction.bottommost-level-force`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#bottommost-level-force-从-v757-和-v854-版本开始引入)。 +- 将 TiKV 配置项 [`max-manifest-file-size`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#max-manifest-file-size) 的默认值从 `128MiB` 修改为 `256MiB`,以避免在单个 TiKV 节点的 SST 文件数量过多时,频繁触发 Manifest 文件的 compaction,从而影响整体性能 [#18996](https://github.com/tikv/tikv/issues/18996) @[glorv](https://github.com/glorv) + - 新增 TiFlash 配置项 [`flash.graceful_wait_shutdown_timeout`](https://docs.pingcap.com/zh/tidb/v8.5/tiflash-configuration#graceful_wait_shutdown_timeout-从-v854-版本开始引入),用于控制在关闭 TiFlash 服务器时的最长等待时间,默认值为 `600` 秒。在此期间,TiFlash 允许尚未完成的 MPP 任务继续执行,但不再接收新的 MPP 任务。如果所有正在运行的 MPP 任务都在此超时时间之前完成,TiFlash 将立即关闭;否则将在等待时间结束后强制关闭。 [#10266](https://github.com/pingcap/tiflash/issues/10266) @[gengliqi](https://github.com/gengliqi) ### MySQL 兼容性 diff --git a/tikv-configuration-file.md b/tikv-configuration-file.md index 48c569cdbd4f..f684dcf69925 100644 --- a/tikv-configuration-file.md +++ b/tikv-configuration-file.md @@ -1251,7 +1251,7 @@ RocksDB 相关的配置项。 ### `max-manifest-file-size` + RocksDB Manifest 文件最大大小。 -+ 默认值:128MiB ++ 默认值:256MiB。在 v8.5.3 及之前的 v8.5.x 版本中,默认值为 `128MiB`。 + 最小值:0 + 单位:B|KiB|MiB|GiB From a7693bbcc31a08ef0ff68bf31d47175ba3fde1f1 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 24 Sep 2025 17:27:37 +0800 Subject: [PATCH 02/23] Add index lookup push down content --- optimizer-hints.md | 40 ++++++++++++++++++++++++++++++++++++++++ system-variables.md | 9 +++++++++ 2 files changed, 49 insertions(+) diff --git a/optimizer-hints.md b/optimizer-hints.md index 7fffc9da259e..0bb2edafadcc 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -476,6 +476,46 @@ EXPLAIN SELECT /*+ NO_ORDER_INDEX(t, a) */ a FROM t ORDER BY a LIMIT 10; 和 `ORDER_INDEX` Hint 的示例相同,优化器对该查询会生成两类计划:`Limit + IndexScan(keep order: true)` 和 `TopN + IndexScan(keep order: false)`,当使用了 `NO_ORDER_INDEX` Hint,优化器会选择后一种不按照顺序读取索引的计划。 +### INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...]) + +`INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...])` 提示优化器对指定表仅使用给出的索引,并下推 `IndexLookUp` 算子到 TiKV。 + +以下示例展示了使用此 Hint 的查询计划: + +{{< copyable "sql" >}} + +```sql +CREATE TABLE t1(a INT, b INT, key(a)); +EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; +``` + +```sql ++-----------------------------+----------+-----------+----------------------+--------------------------------+ +| id | estRows | task | access object | operator info | ++-----------------------------+----------+-----------+----------------------+--------------------------------+ +| IndexLookUp_7 | 10000.00 | root | | | +| ├─LocalIndexLookUp(Build) | 10000.00 | cop[tikv] | | index handle offsets:[1] | +| │ ├─IndexFullScan_5(Build) | 10000.00 | cop[tikv] | table:t1, index:a(a) | keep order:false, stats:pseudo | +| │ └─TableRowIDScan_8(Probe) | 10000.00 | cop[tikv] | table:t1 | keep order:false, stats:pseudo | +| └─TableRowIDScan_6(Probe) | 0.00 | cop[tikv] | table:t1 | keep order:false, stats:pseudo | ++-----------------------------+----------+-----------+----------------------+--------------------------------+ +``` + +在启用 `INDEX_LOOKUP_PUSHDOWN` hint 后,下推计划中的最外层 Build 算子会变为 `LocalIndexLookUp`。这意味着 TiKV 在扫描索引的同时,会尝试在本地回表查询对应的行数据。然而,由于索引和行数据可能分布在不同的 Region,下推请求无法保证覆盖所有目标行。因此,TiDB 端仍需保留 `TableRowIDScan`,用于补充查询那些下推无法命中的行。此 hint 受系统变量 [`tidb_enable_index_lookup_pushdown`](/system-variables.md#tidb_enable_index_lookup_pushdown-从-v90-版本开始引入) 影响。 + +`INDEX_LOOKUP_PUSHDOWN` 当前的使用限制如下: + +- 不支持缓存表(cache table)和临时表。 +- 暂不支持分区表查询。 +- 暂不支持复合主键或主键为非整型的聚簇索引表。 +- 暂不支持除 `REPEATABLE-READ` 之外的其他隔离级别。 +- 暂不支持[多值索引](/choose-index.md#使用多值索引)的查询。 +- 暂不支持 [Follower Read](/follower-read.md)。 +- 暂不支持 [Stale Read](/stale-read.md) 或 [使用 `tidb_snapshot` 来读取历史数据](/read-historical-data.md)。 +- 下推的 `LocalIndexLookUp` 算子暂不支持 keep order。若执行计划中包含基于索引列的 `ORDER BY`,则会退化为普通的 `LocalIndexLookUp` 查询。 +- 下推的 `LocalIndexLookUp` 算子暂不支持以分页 (paging)方式发送 Coprocessor 请求。 +- 下推的 `LocalIndexLookUp` 算子暂不支持对[下推计算结果进行缓存](/coprocessor-cache.md) + ### AGG_TO_COP() `AGG_TO_COP()` 提示优化器将指定查询块中的聚合函数下推到 coprocessor。如果优化器没有下推某些适合下推的聚合函数,建议尝试使用。例如: diff --git a/system-variables.md b/system-variables.md index b087d1d036c6..5a6eecc67821 100644 --- a/system-variables.md +++ b/system-variables.md @@ -2028,6 +2028,15 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1; - 默认值:`OFF` - 这个变量用来控制 `PLAN REPLAYER CAPTURE` 抓取的内容是否默认带历史统计信息。默认值为 `OFF`,表示默认不带历史统计信息。 +### `tidb_enable_index_lookup_pushdown` 从 v9.0 版本开始引入 + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否 +- 类型:布尔型 +- 默认值:`OFF` +- 这个变量用于控制是否启用 IndexLookUp 下推。当变量值为 `ON` 且查询中显式使用了 hint [`INDEX_LOOKUP_PUSHDOWN`](/optimizer-hints.md#index_lookup_pushdownt1_name-idx1_name--idx2_name-) 时,TiDB 会将相应的 IndexLookUp 查询下推至 TiKV 执行。若变量值为 `OFF`,则即使在查询中指定了 `INDEX_LOOKUP_PUSHDOWN` Hint,也不会生效。 + ### `tidb_enable_index_merge` 从 v4.0 版本开始引入 > **注意:** From 8be0b2e11c5b4c7677a1b6d195972ffaed4a344f Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Thu, 16 Oct 2025 10:20:14 +0800 Subject: [PATCH 03/23] remove sys var --- optimizer-hints.md | 2 +- system-variables.md | 9 --------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 0bb2edafadcc..b867a10a1ded 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -501,7 +501,7 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; +-----------------------------+----------+-----------+----------------------+--------------------------------+ ``` -在启用 `INDEX_LOOKUP_PUSHDOWN` hint 后,下推计划中的最外层 Build 算子会变为 `LocalIndexLookUp`。这意味着 TiKV 在扫描索引的同时,会尝试在本地回表查询对应的行数据。然而,由于索引和行数据可能分布在不同的 Region,下推请求无法保证覆盖所有目标行。因此,TiDB 端仍需保留 `TableRowIDScan`,用于补充查询那些下推无法命中的行。此 hint 受系统变量 [`tidb_enable_index_lookup_pushdown`](/system-variables.md#tidb_enable_index_lookup_pushdown-从-v90-版本开始引入) 影响。 +在启用 `INDEX_LOOKUP_PUSHDOWN` hint 后,下推计划中的最外层 Build 算子会变为 `LocalIndexLookUp`。这意味着 TiKV 在扫描索引的同时,会尝试在本地回表查询对应的行数据。然而,由于索引和行数据可能分布在不同的 Region,下推请求无法保证覆盖所有目标行。因此,TiDB 端仍需保留 `TableRowIDScan`,用于补充查询那些下推无法命中的行。 `INDEX_LOOKUP_PUSHDOWN` 当前的使用限制如下: diff --git a/system-variables.md b/system-variables.md index 5a6eecc67821..b087d1d036c6 100644 --- a/system-variables.md +++ b/system-variables.md @@ -2028,15 +2028,6 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1; - 默认值:`OFF` - 这个变量用来控制 `PLAN REPLAYER CAPTURE` 抓取的内容是否默认带历史统计信息。默认值为 `OFF`,表示默认不带历史统计信息。 -### `tidb_enable_index_lookup_pushdown` 从 v9.0 版本开始引入 - -- 作用域:SESSION | GLOBAL -- 是否持久化到集群:是 -- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否 -- 类型:布尔型 -- 默认值:`OFF` -- 这个变量用于控制是否启用 IndexLookUp 下推。当变量值为 `ON` 且查询中显式使用了 hint [`INDEX_LOOKUP_PUSHDOWN`](/optimizer-hints.md#index_lookup_pushdownt1_name-idx1_name--idx2_name-) 时,TiDB 会将相应的 IndexLookUp 查询下推至 TiKV 执行。若变量值为 `OFF`,则即使在查询中指定了 `INDEX_LOOKUP_PUSHDOWN` Hint,也不会生效。 - ### `tidb_enable_index_merge` 从 v4.0 版本开始引入 > **注意:** From 128b44c55b52cafa1b00395b8279c140c68a6668 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Tue, 16 Dec 2025 15:25:28 +0800 Subject: [PATCH 04/23] add sysvar and NO_INDEX_LOOKUP_PUSHDOWN --- optimizer-hints.md | 34 +++++++++++++++++++++++++--------- system-variables.md | 13 +++++++++++++ 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index b867a10a1ded..b356016744ab 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -476,11 +476,11 @@ EXPLAIN SELECT /*+ NO_ORDER_INDEX(t, a) */ a FROM t ORDER BY a LIMIT 10; 和 `ORDER_INDEX` Hint 的示例相同,优化器对该查询会生成两类计划:`Limit + IndexScan(keep order: true)` 和 `TopN + IndexScan(keep order: false)`,当使用了 `NO_ORDER_INDEX` Hint,优化器会选择后一种不按照顺序读取索引的计划。 -### INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...]) +### INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...]) 从 v8.5.5 和 v9.0.0 版本开始引入 -`INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...])` 提示优化器对指定表仅使用给出的索引,并下推 `IndexLookUp` 算子到 TiKV。 +`INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...])` 提示优化器对指定表仅使用给出的索引,并将 `IndexLookUp` 算子下推到 TiKV。 -以下示例展示了使用此 Hint 的查询计划: +以下示例展示了使用该 Hint 时生成的执行计划: {{< copyable "sql" >}} @@ -501,20 +501,36 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; +-----------------------------+----------+-----------+----------------------+--------------------------------+ ``` -在启用 `INDEX_LOOKUP_PUSHDOWN` hint 后,下推计划中的最外层 Build 算子会变为 `LocalIndexLookUp`。这意味着 TiKV 在扫描索引的同时,会尝试在本地回表查询对应的行数据。然而,由于索引和行数据可能分布在不同的 Region,下推请求无法保证覆盖所有目标行。因此,TiDB 端仍需保留 `TableRowIDScan`,用于补充查询那些下推无法命中的行。 +开启 `INDEX_LOOKUP_PUSHDOWN` hint 后,下推计划中的最外层 Build 算子会变为 `LocalIndexLookUp`。TiKV 在扫描索引的同时,会尝试在本地回表取数。但索引和行数据可能分布在不同 Region,下推请求无法覆盖所有目标行,因此 TiDB 端仍需保留 `TableRowIDScan` 来补齐未命中的行。 `INDEX_LOOKUP_PUSHDOWN` 当前的使用限制如下: - 不支持缓存表(cache table)和临时表。 -- 暂不支持分区表查询。 -- 暂不支持复合主键或主键为非整型的聚簇索引表。 +- 暂不支持使用[全局索引](/global-indexes.md)的查询。 +- 暂不支持使用[多值索引](/choose-index.md#使用多值索引)的查询。 - 暂不支持除 `REPEATABLE-READ` 之外的其他隔离级别。 -- 暂不支持[多值索引](/choose-index.md#使用多值索引)的查询。 - 暂不支持 [Follower Read](/follower-read.md)。 - 暂不支持 [Stale Read](/stale-read.md) 或 [使用 `tidb_snapshot` 来读取历史数据](/read-historical-data.md)。 - 下推的 `LocalIndexLookUp` 算子暂不支持 keep order。若执行计划中包含基于索引列的 `ORDER BY`,则会退化为普通的 `LocalIndexLookUp` 查询。 -- 下推的 `LocalIndexLookUp` 算子暂不支持以分页 (paging)方式发送 Coprocessor 请求。 -- 下推的 `LocalIndexLookUp` 算子暂不支持对[下推计算结果进行缓存](/coprocessor-cache.md) +- 下推的 `LocalIndexLookUp` 算子暂不支持以分页 (paging) 方式发送 Coprocessor 请求。 +- 下推的 `LocalIndexLookUp` 算子暂不支持对[下推计算结果进行缓存](/coprocessor-cache.md)。 + +### NO_INDEX_LOOKUP_PUSHDOWN(t1_name) 从 v8.5.5 和 v9.0.0 版本开始引入 + +`NO_INDEX_LOOKUP_PUSHDOWN(t1_name)` 用于关闭指定表的 IndexLookUp 下推。它常与系统变量 `tidb_index_lookup_pushdown_policy` 一起使用,在该变量值不是 `hint-only` 时按需阻止下推。下面的示例将变量设置为 `force`,会自动下推当前会话的所有 `IndexLookUp` 算子,但如果在查询中指定了 `NO_INDEX_LOOKUP_PUSHDOWN`,则不会下推: + +{{< copyable "sql" >}} + +```sql +SET @@tidb_index_lookup_pushdown_policy = 'force'; + +-- 不会下推 IndexLookUp 算子 +SELECT /*+ NO_INDEX_LOOKUP_PUSHDOWN(t) */ * FROM t WHERE a > 1; +``` + +> **注意:** +> +> - `NO_INDEX_LOOKUP_PUSHDOWN` 优先级高于 `INDEX_LOOKUP_PUSHDOWN`。当两类 Hint 同时存在时,以 `NO_INDEX_LOOKUP_PUSHDOWN` 为准。 ### AGG_TO_COP() diff --git a/system-variables.md b/system-variables.md index b087d1d036c6..36f75b10eb57 100644 --- a/system-variables.md +++ b/system-variables.md @@ -3003,6 +3003,19 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 这个变量用来设置 index lookup join 算法的并发度。 - 默认值 `-1` 表示使用 `tidb_executor_concurrency` 的值。 +### `tidb_index_lookup_pushdown_policy` 从 v8.5.5 和 v9.0.0 版本开始引入 + +- 作用域:SESSION | GLOBAL +- 是否持久化到集群:是 +- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:是 +- 类型:枚举型 +- 默认值:`hint-only` +- 可选值:`hint-only`,`affinity-force`,`force` +- 该变量用于控制是否以及如何将 `IndexLookUp` 算子下推到 TiKV。可选值说明如下: + - `hint-only`(默认):仅在显式设置了 hint [`INDEX_LOOKUP_PUSHDOWN`](/optimizer-hints.md#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入) 时下推。 + - `affinity-force`:仅对设置了 `AFFINITY` 选项的表自动下推。 + - `force`:对所有表开启 `IndexLookUp` 的下推。 + ### `tidb_index_merge_intersection_concurrency` 从 v6.5.0 版本开始引入 - 作用域:SESSION | GLOBAL From e74827680f112647f749ac7d2b1aeae3ac29550a Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:55:37 +0800 Subject: [PATCH 05/23] Update system-variables.md Co-authored-by: Aolin --- system-variables.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/system-variables.md b/system-variables.md index 36f75b10eb57..5c12ee04071e 100644 --- a/system-variables.md +++ b/system-variables.md @@ -3011,10 +3011,10 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 类型:枚举型 - 默认值:`hint-only` - 可选值:`hint-only`,`affinity-force`,`force` -- 该变量用于控制是否以及如何将 `IndexLookUp` 算子下推到 TiKV。可选值说明如下: - - `hint-only`(默认):仅在显式设置了 hint [`INDEX_LOOKUP_PUSHDOWN`](/optimizer-hints.md#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入) 时下推。 - - `affinity-force`:仅对设置了 `AFFINITY` 选项的表自动下推。 - - `force`:对所有表开启 `IndexLookUp` 的下推。 +- 该变量用于控制 TiDB 是否以及如何将 `IndexLookUp` 算子下推到 TiKV。可选值的含义如下: + - `hint-only`(默认值):仅在 SQL 中显式指定 [`INDEX_LOOKUP_PUSHDOWN`](/optimizer-hints.md#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入) Hint 时,才将 `IndexLookUp` 算子下推到 TiKV。 + - `affinity-force`:仅对配置了 `AFFINITY` 选项的表自动启用下推。 + - `force`:对所有表开启 `IndexLookUp` 算子下推。 ### `tidb_index_merge_intersection_concurrency` 从 v6.5.0 版本开始引入 From d3613b713acdb987137f84b153b70a5719c06f21 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:56:02 +0800 Subject: [PATCH 06/23] Update optimizer-hints.md Co-authored-by: Aolin --- optimizer-hints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index b356016744ab..3cc092f0d86e 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -478,7 +478,7 @@ EXPLAIN SELECT /*+ NO_ORDER_INDEX(t, a) */ a FROM t ORDER BY a LIMIT 10; ### INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...]) 从 v8.5.5 和 v9.0.0 版本开始引入 -`INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...])` 提示优化器对指定表仅使用给出的索引,并将 `IndexLookUp` 算子下推到 TiKV。 +`INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...])` 提示优化器仅使用指定的索引访问指定的表,并将 `IndexLookUp` 算子下推到 TiKV 执行。 以下示例展示了使用该 Hint 时生成的执行计划: From 89b56617584cb1585e3992e358804ec218ddff39 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:56:45 +0800 Subject: [PATCH 07/23] Update optimizer-hints.md Co-authored-by: Aolin --- optimizer-hints.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 3cc092f0d86e..721fbc844a94 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -480,9 +480,7 @@ EXPLAIN SELECT /*+ NO_ORDER_INDEX(t, a) */ a FROM t ORDER BY a LIMIT 10; `INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...])` 提示优化器仅使用指定的索引访问指定的表,并将 `IndexLookUp` 算子下推到 TiKV 执行。 -以下示例展示了使用该 Hint 时生成的执行计划: - -{{< copyable "sql" >}} +以下示例展示了使用该 Hint 后生成的执行计划: ```sql CREATE TABLE t1(a INT, b INT, key(a)); From 59a0490e111e9bddbe786f258e8a4f50e5ed382d Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:56:54 +0800 Subject: [PATCH 08/23] Update optimizer-hints.md Co-authored-by: Aolin --- optimizer-hints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 721fbc844a94..59d0d2724e13 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -501,7 +501,7 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; 开启 `INDEX_LOOKUP_PUSHDOWN` hint 后,下推计划中的最外层 Build 算子会变为 `LocalIndexLookUp`。TiKV 在扫描索引的同时,会尝试在本地回表取数。但索引和行数据可能分布在不同 Region,下推请求无法覆盖所有目标行,因此 TiDB 端仍需保留 `TableRowIDScan` 来补齐未命中的行。 -`INDEX_LOOKUP_PUSHDOWN` 当前的使用限制如下: +`INDEX_LOOKUP_PUSHDOWN` Hint 目前存在以下限制: - 不支持缓存表(cache table)和临时表。 - 暂不支持使用[全局索引](/global-indexes.md)的查询。 From 28bd5bd99f1691fd90a49964edef89672f53cb82 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:57:19 +0800 Subject: [PATCH 09/23] Update optimizer-hints.md Co-authored-by: Aolin --- optimizer-hints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 59d0d2724e13..59fa040fdc55 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -499,7 +499,7 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; +-----------------------------+----------+-----------+----------------------+--------------------------------+ ``` -开启 `INDEX_LOOKUP_PUSHDOWN` hint 后,下推计划中的最外层 Build 算子会变为 `LocalIndexLookUp`。TiKV 在扫描索引的同时,会尝试在本地回表取数。但索引和行数据可能分布在不同 Region,下推请求无法覆盖所有目标行,因此 TiDB 端仍需保留 `TableRowIDScan` 来补齐未命中的行。 +开启 `INDEX_LOOKUP_PUSHDOWN` Hint 后,执行计划中原本位于 TiDB 侧的最外层 Build 算子会被替换为 `LocalIndexLookUp`,并下推到 TiKV 执行。TiKV 在扫描索引的同时,会尝试在本地回表读取行数据。由于索引和行数据可能分布在不同的 Region,下推请求可能无法覆盖所有目标行,因此 TiDB 侧仍会保留 `TableRowIDScan` 算子,用于补齐未在 TiKV 侧命中的行数据。 `INDEX_LOOKUP_PUSHDOWN` Hint 目前存在以下限制: From 31b545af02b369e4e49b6c39e642305bfbfde38e Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:57:26 +0800 Subject: [PATCH 10/23] Update optimizer-hints.md Co-authored-by: Aolin --- optimizer-hints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 59fa040fdc55..1252a5f69366 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -503,7 +503,7 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; `INDEX_LOOKUP_PUSHDOWN` Hint 目前存在以下限制: -- 不支持缓存表(cache table)和临时表。 +- 不支持缓存表 (cached table) 和临时表。 - 暂不支持使用[全局索引](/global-indexes.md)的查询。 - 暂不支持使用[多值索引](/choose-index.md#使用多值索引)的查询。 - 暂不支持除 `REPEATABLE-READ` 之外的其他隔离级别。 From e94295ece83ccd9eaf3ceb5892fabf6aa93ef1ec Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:57:36 +0800 Subject: [PATCH 11/23] Update optimizer-hints.md Co-authored-by: Aolin --- optimizer-hints.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 1252a5f69366..960b87e6efef 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -508,10 +508,10 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; - 暂不支持使用[多值索引](/choose-index.md#使用多值索引)的查询。 - 暂不支持除 `REPEATABLE-READ` 之外的其他隔离级别。 - 暂不支持 [Follower Read](/follower-read.md)。 -- 暂不支持 [Stale Read](/stale-read.md) 或 [使用 `tidb_snapshot` 来读取历史数据](/read-historical-data.md)。 -- 下推的 `LocalIndexLookUp` 算子暂不支持 keep order。若执行计划中包含基于索引列的 `ORDER BY`,则会退化为普通的 `LocalIndexLookUp` 查询。 +- 暂不支持 [Stale Read](/stale-read.md) 或[使用 `tidb_snapshot` 来读取历史数据](/read-historical-data.md)。 +- 下推的 `LocalIndexLookUp` 算子暂不支持 keep order。如果执行计划包含基于索引列的 `ORDER BY`,查询将回退为普通的 `IndexLookUp`。 - 下推的 `LocalIndexLookUp` 算子暂不支持以分页 (paging) 方式发送 Coprocessor 请求。 -- 下推的 `LocalIndexLookUp` 算子暂不支持对[下推计算结果进行缓存](/coprocessor-cache.md)。 +- 下推的 `LocalIndexLookUp` 算子暂不支持[下推计算结果缓存](/coprocessor-cache.md)。 ### NO_INDEX_LOOKUP_PUSHDOWN(t1_name) 从 v8.5.5 和 v9.0.0 版本开始引入 From 0d0926cbbfc26c95d3972452eaaf537f66920820 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:57:43 +0800 Subject: [PATCH 12/23] Update optimizer-hints.md Co-authored-by: Aolin --- optimizer-hints.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 960b87e6efef..a3c29664c07c 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -515,7 +515,9 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; ### NO_INDEX_LOOKUP_PUSHDOWN(t1_name) 从 v8.5.5 和 v9.0.0 版本开始引入 -`NO_INDEX_LOOKUP_PUSHDOWN(t1_name)` 用于关闭指定表的 IndexLookUp 下推。它常与系统变量 `tidb_index_lookup_pushdown_policy` 一起使用,在该变量值不是 `hint-only` 时按需阻止下推。下面的示例将变量设置为 `force`,会自动下推当前会话的所有 `IndexLookUp` 算子,但如果在查询中指定了 `NO_INDEX_LOOKUP_PUSHDOWN`,则不会下推: +`NO_INDEX_LOOKUP_PUSHDOWN(t1_name)` 用于显式禁止对指定表执行 `IndexLookUp` 下推。该 Hint 通常与系统变量 [`tidb_index_lookup_pushdown_policy`](/system-variables.md#tidb_index_lookup_pushdown_policy-从-v855-和-v900-版本开始引入) 配合使用。当该变量的值为 `force` 或 `affinity-force` 时,你可以使用此 Hint 阻止特定表的下推。 + +以下示例将 `tidb_index_lookup_pushdown_policy` 变量设置为 `force`,使当前会话中的所有 `IndexLookUp` 算子自动下推。如果在查询中指定了 `NO_INDEX_LOOKUP_PUSHDOWN` Hint,则对应表不会下推: {{< copyable "sql" >}} From fad0a1c61a0c2f09e11d8bfbd015b89dd25da5e9 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 17 Dec 2025 10:58:01 +0800 Subject: [PATCH 13/23] Update optimizer-hints.md Co-authored-by: Aolin --- optimizer-hints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index a3c29664c07c..4a8705a68476 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -530,7 +530,7 @@ SELECT /*+ NO_INDEX_LOOKUP_PUSHDOWN(t) */ * FROM t WHERE a > 1; > **注意:** > -> - `NO_INDEX_LOOKUP_PUSHDOWN` 优先级高于 `INDEX_LOOKUP_PUSHDOWN`。当两类 Hint 同时存在时,以 `NO_INDEX_LOOKUP_PUSHDOWN` 为准。 +> `NO_INDEX_LOOKUP_PUSHDOWN` 的优先级高于 [`INDEX_LOOKUP_PUSHDOWN`](#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入)。当两个 Hint 同时存在时,`NO_INDEX_LOOKUP_PUSHDOWN` 生效。 ### AGG_TO_COP() From 0d2c4bc7573e14ca891179f3a5bae2ed1144fa03 Mon Sep 17 00:00:00 2001 From: Aolin Date: Wed, 17 Dec 2025 15:22:17 +0800 Subject: [PATCH 14/23] remove copyable --- optimizer-hints.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 4a8705a68476..b543ff9f69b4 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -519,8 +519,6 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; 以下示例将 `tidb_index_lookup_pushdown_policy` 变量设置为 `force`,使当前会话中的所有 `IndexLookUp` 算子自动下推。如果在查询中指定了 `NO_INDEX_LOOKUP_PUSHDOWN` Hint,则对应表不会下推: -{{< copyable "sql" >}} - ```sql SET @@tidb_index_lookup_pushdown_policy = 'force'; From e7d9b9c35489bb65ecc66e8952aea5107889b513 Mon Sep 17 00:00:00 2001 From: Aolin Date: Mon, 29 Dec 2025 11:40:31 +0800 Subject: [PATCH 15/23] Apply suggestions from code review Co-authored-by: Grace Cai --- optimizer-hints.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index b543ff9f69b4..a7749e4a080d 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -483,7 +483,7 @@ EXPLAIN SELECT /*+ NO_ORDER_INDEX(t, a) */ a FROM t ORDER BY a LIMIT 10; 以下示例展示了使用该 Hint 后生成的执行计划: ```sql -CREATE TABLE t1(a INT, b INT, key(a)); +CREATE TABLE t1(a INT, b INT, KEY(a)); EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; ``` @@ -499,7 +499,7 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; +-----------------------------+----------+-----------+----------------------+--------------------------------+ ``` -开启 `INDEX_LOOKUP_PUSHDOWN` Hint 后,执行计划中原本位于 TiDB 侧的最外层 Build 算子会被替换为 `LocalIndexLookUp`,并下推到 TiKV 执行。TiKV 在扫描索引的同时,会尝试在本地回表读取行数据。由于索引和行数据可能分布在不同的 Region,下推请求可能无法覆盖所有目标行,因此 TiDB 侧仍会保留 `TableRowIDScan` 算子,用于补齐未在 TiKV 侧命中的行数据。 +开启 `INDEX_LOOKUP_PUSHDOWN` Hint 后,执行计划中原本位于 TiDB 侧的最外层 Build 算子会被替换为 `LocalIndexLookUp`,并下推到 TiKV 执行。TiKV 在扫描索引的同时,会尝试在本地回表读取行数据。由于索引和行数据可能分布在不同的 Region,下推到 TiKV 的请求可能无法覆盖所有目标行。因此,执行计划中仍会保留 TiDB 侧的 `TableRowIDScan` 算子,用于补齐未在 TiKV 侧命中的行数据。 `INDEX_LOOKUP_PUSHDOWN` Hint 目前存在以下限制: @@ -509,15 +509,15 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; - 暂不支持除 `REPEATABLE-READ` 之外的其他隔离级别。 - 暂不支持 [Follower Read](/follower-read.md)。 - 暂不支持 [Stale Read](/stale-read.md) 或[使用 `tidb_snapshot` 来读取历史数据](/read-historical-data.md)。 -- 下推的 `LocalIndexLookUp` 算子暂不支持 keep order。如果执行计划包含基于索引列的 `ORDER BY`,查询将回退为普通的 `IndexLookUp`。 +- 下推的 `LocalIndexLookUp` 算子暂不支持 `keep order`。如果执行计划包含基于索引列的 `ORDER BY`,查询将回退为普通的 `IndexLookUp`。 - 下推的 `LocalIndexLookUp` 算子暂不支持以分页 (paging) 方式发送 Coprocessor 请求。 - 下推的 `LocalIndexLookUp` 算子暂不支持[下推计算结果缓存](/coprocessor-cache.md)。 ### NO_INDEX_LOOKUP_PUSHDOWN(t1_name) 从 v8.5.5 和 v9.0.0 版本开始引入 -`NO_INDEX_LOOKUP_PUSHDOWN(t1_name)` 用于显式禁止对指定表执行 `IndexLookUp` 下推。该 Hint 通常与系统变量 [`tidb_index_lookup_pushdown_policy`](/system-variables.md#tidb_index_lookup_pushdown_policy-从-v855-和-v900-版本开始引入) 配合使用。当该变量的值为 `force` 或 `affinity-force` 时,你可以使用此 Hint 阻止特定表的下推。 +`NO_INDEX_LOOKUP_PUSHDOWN(t1_name)` 用于显式禁止对指定表执行 `IndexLookUp` 下推。该 Hint 通常与系统变量 [`tidb_index_lookup_pushdown_policy`](/system-variables.md#tidb_index_lookup_pushdown_policy-从-v855-和-v900-版本开始引入) 配合使用。当该变量的值为 `force` 或 `affinity-force` 时,你可以使用此 Hint 阻止特定表下推 `IndexLookUp`。 -以下示例将 `tidb_index_lookup_pushdown_policy` 变量设置为 `force`,使当前会话中的所有 `IndexLookUp` 算子自动下推。如果在查询中指定了 `NO_INDEX_LOOKUP_PUSHDOWN` Hint,则对应表不会下推: +以下示例将 `tidb_index_lookup_pushdown_policy` 变量设置为 `force`,使当前会话中的所有 `IndexLookUp` 算子自动下推。如果在查询中指定了 `NO_INDEX_LOOKUP_PUSHDOWN` Hint,则对应表不会下推 `IndexLookUp`: ```sql SET @@tidb_index_lookup_pushdown_policy = 'force'; @@ -528,7 +528,7 @@ SELECT /*+ NO_INDEX_LOOKUP_PUSHDOWN(t) */ * FROM t WHERE a > 1; > **注意:** > -> `NO_INDEX_LOOKUP_PUSHDOWN` 的优先级高于 [`INDEX_LOOKUP_PUSHDOWN`](#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入)。当两个 Hint 同时存在时,`NO_INDEX_LOOKUP_PUSHDOWN` 生效。 +> `NO_INDEX_LOOKUP_PUSHDOWN` 的优先级高于 [`INDEX_LOOKUP_PUSHDOWN`](#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入)。当同一个查询中同时指定这两个 Hint 时,`NO_INDEX_LOOKUP_PUSHDOWN` 生效。 ### AGG_TO_COP() From de57c2199d4315102aa33b2b2cb1f4d912c7520e Mon Sep 17 00:00:00 2001 From: Aolin Date: Mon, 29 Dec 2025 11:42:03 +0800 Subject: [PATCH 16/23] Apply suggestions from code review Co-authored-by: Grace Cai --- system-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-variables.md b/system-variables.md index 5c12ee04071e..a9b416275d60 100644 --- a/system-variables.md +++ b/system-variables.md @@ -3011,7 +3011,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 类型:枚举型 - 默认值:`hint-only` - 可选值:`hint-only`,`affinity-force`,`force` -- 该变量用于控制 TiDB 是否以及如何将 `IndexLookUp` 算子下推到 TiKV。可选值的含义如下: +- 该变量用于控制 TiDB 是否以及在什么条件下将 `IndexLookUp` 算子下推到 TiKV。可选值的含义如下: - `hint-only`(默认值):仅在 SQL 中显式指定 [`INDEX_LOOKUP_PUSHDOWN`](/optimizer-hints.md#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入) Hint 时,才将 `IndexLookUp` 算子下推到 TiKV。 - `affinity-force`:仅对配置了 `AFFINITY` 选项的表自动启用下推。 - `force`:对所有表开启 `IndexLookUp` 算子下推。 From d246bb67e7039f2cf2898903abaa52058aaa9318 Mon Sep 17 00:00:00 2001 From: Aolin Date: Tue, 30 Dec 2025 10:30:20 +0800 Subject: [PATCH 17/23] Apply suggestions from code review Co-authored-by: Grace Cai --- optimizer-hints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index a7749e4a080d..9115289b781f 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -499,7 +499,7 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; +-----------------------------+----------+-----------+----------------------+--------------------------------+ ``` -开启 `INDEX_LOOKUP_PUSHDOWN` Hint 后,执行计划中原本位于 TiDB 侧的最外层 Build 算子会被替换为 `LocalIndexLookUp`,并下推到 TiKV 执行。TiKV 在扫描索引的同时,会尝试在本地回表读取行数据。由于索引和行数据可能分布在不同的 Region,下推到 TiKV 的请求可能无法覆盖所有目标行。因此,执行计划中仍会保留 TiDB 侧的 `TableRowIDScan` 算子,用于补齐未在 TiKV 侧命中的行数据。 +使用 `INDEX_LOOKUP_PUSHDOWN` Hint 后,执行计划中原本位于 TiDB 侧的最外层 Build 算子会被替换为 `LocalIndexLookUp`,并下推到 TiKV 执行。TiKV 在扫描索引的同时,会尝试在本地回表读取行数据。由于索引和行数据可能分布在不同的 Region,下推到 TiKV 的请求可能无法覆盖所有目标行。因此,执行计划中仍会保留 TiDB 侧的 `TableRowIDScan` 算子,用于补齐未在 TiKV 侧命中的行数据。 `INDEX_LOOKUP_PUSHDOWN` Hint 目前存在以下限制: From 7b8a3c8f53a2643b8b644e85f425924ff341d431 Mon Sep 17 00:00:00 2001 From: Aolin Date: Wed, 31 Dec 2025 15:26:16 +0800 Subject: [PATCH 18/23] Apply suggestions from code review --- optimizer-hints.md | 4 ++-- system-variables.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 9115289b781f..93fde2cdd81c 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -476,7 +476,7 @@ EXPLAIN SELECT /*+ NO_ORDER_INDEX(t, a) */ a FROM t ORDER BY a LIMIT 10; 和 `ORDER_INDEX` Hint 的示例相同,优化器对该查询会生成两类计划:`Limit + IndexScan(keep order: true)` 和 `TopN + IndexScan(keep order: false)`,当使用了 `NO_ORDER_INDEX` Hint,优化器会选择后一种不按照顺序读取索引的计划。 -### INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...]) 从 v8.5.5 和 v9.0.0 版本开始引入 +### INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...]) 从 v8.5.5 版本开始引入 `INDEX_LOOKUP_PUSHDOWN(t1_name, idx1_name [, idx2_name ...])` 提示优化器仅使用指定的索引访问指定的表,并将 `IndexLookUp` 算子下推到 TiKV 执行。 @@ -513,7 +513,7 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; - 下推的 `LocalIndexLookUp` 算子暂不支持以分页 (paging) 方式发送 Coprocessor 请求。 - 下推的 `LocalIndexLookUp` 算子暂不支持[下推计算结果缓存](/coprocessor-cache.md)。 -### NO_INDEX_LOOKUP_PUSHDOWN(t1_name) 从 v8.5.5 和 v9.0.0 版本开始引入 +### NO_INDEX_LOOKUP_PUSHDOWN(t1_name) 从 v8.5.5 版本开始引入 `NO_INDEX_LOOKUP_PUSHDOWN(t1_name)` 用于显式禁止对指定表执行 `IndexLookUp` 下推。该 Hint 通常与系统变量 [`tidb_index_lookup_pushdown_policy`](/system-variables.md#tidb_index_lookup_pushdown_policy-从-v855-和-v900-版本开始引入) 配合使用。当该变量的值为 `force` 或 `affinity-force` 时,你可以使用此 Hint 阻止特定表下推 `IndexLookUp`。 diff --git a/system-variables.md b/system-variables.md index a9b416275d60..6cd93896ae41 100644 --- a/system-variables.md +++ b/system-variables.md @@ -3003,7 +3003,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 这个变量用来设置 index lookup join 算法的并发度。 - 默认值 `-1` 表示使用 `tidb_executor_concurrency` 的值。 -### `tidb_index_lookup_pushdown_policy` 从 v8.5.5 和 v9.0.0 版本开始引入 +### `tidb_index_lookup_pushdown_policy` 从 v8.5.5 版本开始引入 - 作用域:SESSION | GLOBAL - 是否持久化到集群:是 From fda434ae3a3502ffa5a2110f0c9f9bb7fe2d41de Mon Sep 17 00:00:00 2001 From: Aolin Date: Wed, 31 Dec 2025 15:27:21 +0800 Subject: [PATCH 19/23] Discard changes to releases/release-8.5.4.md --- releases/release-8.5.4.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/releases/release-8.5.4.md b/releases/release-8.5.4.md index 81ee1d53133d..c47266728d77 100644 --- a/releases/release-8.5.4.md +++ b/releases/release-8.5.4.md @@ -80,8 +80,6 @@ TiDB 版本:8.5.4 - 废弃配置项:[`region-compact-check-interval`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-check-interval)、[`region-compact-check-step`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-check-step)、[`region-compact-min-tombstones`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-min-tombstones)、[`region-compact-tombstones-percent`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-tombstones-percent)、[`region-compact-min-redundant-rows`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-min-redundant-rows-从-v710-版本开始引入) 和 [`region-compact-redundant-rows-percent`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#region-compact-redundant-rows-percent-从-v710-版本开始引入)。 - 新增配置项:[`gc.auto-compaction.check-interval`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#check-interval-从-v757-和-v854-版本开始引入)、[`gc.auto-compaction.tombstone-num-threshold`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#tombstone-num-threshold-从-v757-和-v854-版本开始引入)、[`gc.auto-compaction.tombstone-percent-threshold`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#tombstone-percent-threshold-从-v757-和-v854-版本开始引入)、[`gc.auto-compaction.redundant-rows-threshold`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#redundant-rows-threshold-从-v757-和-v854-版本开始引入)、[`gc.auto-compaction.redundant-rows-percent-threshold`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#redundant-rows-percent-threshold-从-v757-和-v854-版本开始引入) 和 [`gc.auto-compaction.bottommost-level-force`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#bottommost-level-force-从-v757-和-v854-版本开始引入)。 -- 将 TiKV 配置项 [`max-manifest-file-size`](https://docs.pingcap.com/zh/tidb/v8.5/tikv-configuration-file#max-manifest-file-size) 的默认值从 `128MiB` 修改为 `256MiB`,以避免在单个 TiKV 节点的 SST 文件数量过多时,频繁触发 Manifest 文件的 compaction,从而影响整体性能 [#18996](https://github.com/tikv/tikv/issues/18996) @[glorv](https://github.com/glorv) - - 新增 TiFlash 配置项 [`flash.graceful_wait_shutdown_timeout`](https://docs.pingcap.com/zh/tidb/v8.5/tiflash-configuration#graceful_wait_shutdown_timeout-从-v854-版本开始引入),用于控制在关闭 TiFlash 服务器时的最长等待时间,默认值为 `600` 秒。在此期间,TiFlash 允许尚未完成的 MPP 任务继续执行,但不再接收新的 MPP 任务。如果所有正在运行的 MPP 任务都在此超时时间之前完成,TiFlash 将立即关闭;否则将在等待时间结束后强制关闭。 [#10266](https://github.com/pingcap/tiflash/issues/10266) @[gengliqi](https://github.com/gengliqi) ### MySQL 兼容性 From 1dd916c970efc890439ed308131ca398e96e3c30 Mon Sep 17 00:00:00 2001 From: Aolin Date: Wed, 31 Dec 2025 15:28:15 +0800 Subject: [PATCH 20/23] Apply suggestions from code review --- system-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-variables.md b/system-variables.md index 6cd93896ae41..1d4faa1119b2 100644 --- a/system-variables.md +++ b/system-variables.md @@ -3012,7 +3012,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告) - 默认值:`hint-only` - 可选值:`hint-only`,`affinity-force`,`force` - 该变量用于控制 TiDB 是否以及在什么条件下将 `IndexLookUp` 算子下推到 TiKV。可选值的含义如下: - - `hint-only`(默认值):仅在 SQL 中显式指定 [`INDEX_LOOKUP_PUSHDOWN`](/optimizer-hints.md#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入) Hint 时,才将 `IndexLookUp` 算子下推到 TiKV。 + - `hint-only`(默认值):仅在 SQL 中显式指定 [`INDEX_LOOKUP_PUSHDOWN`](/optimizer-hints.md#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-版本开始引入) Hint 时,才将 `IndexLookUp` 算子下推到 TiKV。 - `affinity-force`:仅对配置了 `AFFINITY` 选项的表自动启用下推。 - `force`:对所有表开启 `IndexLookUp` 算子下推。 From 0ee1de9fea51640fb4d73e382e9da47be6691caa Mon Sep 17 00:00:00 2001 From: Aolin Date: Wed, 31 Dec 2025 15:28:26 +0800 Subject: [PATCH 21/23] Discard changes to tikv-configuration-file.md --- tikv-configuration-file.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tikv-configuration-file.md b/tikv-configuration-file.md index f684dcf69925..48c569cdbd4f 100644 --- a/tikv-configuration-file.md +++ b/tikv-configuration-file.md @@ -1251,7 +1251,7 @@ RocksDB 相关的配置项。 ### `max-manifest-file-size` + RocksDB Manifest 文件最大大小。 -+ 默认值:256MiB。在 v8.5.3 及之前的 v8.5.x 版本中,默认值为 `128MiB`。 ++ 默认值:128MiB + 最小值:0 + 单位:B|KiB|MiB|GiB From 56641ab60a99a4bf1f7696e6110c1bf0d7c14cf4 Mon Sep 17 00:00:00 2001 From: Aolin Date: Wed, 31 Dec 2025 15:29:05 +0800 Subject: [PATCH 22/23] Apply suggestions from code review --- optimizer-hints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 93fde2cdd81c..53ef2dd283ff 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -528,7 +528,7 @@ SELECT /*+ NO_INDEX_LOOKUP_PUSHDOWN(t) */ * FROM t WHERE a > 1; > **注意:** > -> `NO_INDEX_LOOKUP_PUSHDOWN` 的优先级高于 [`INDEX_LOOKUP_PUSHDOWN`](#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-和-v900-版本开始引入)。当同一个查询中同时指定这两个 Hint 时,`NO_INDEX_LOOKUP_PUSHDOWN` 生效。 +> `NO_INDEX_LOOKUP_PUSHDOWN` 的优先级高于 [`INDEX_LOOKUP_PUSHDOWN`](#index_lookup_pushdownt1_name-idx1_name--idx2_name--从-v855-版本开始引入)。当同一个查询中同时指定这两个 Hint 时,`NO_INDEX_LOOKUP_PUSHDOWN` 生效。 ### AGG_TO_COP() From 950ee58b3dffe52f4460e9085d1199721ee47a42 Mon Sep 17 00:00:00 2001 From: Aolin Date: Wed, 31 Dec 2025 15:29:12 +0800 Subject: [PATCH 23/23] Apply suggestions from code review --- optimizer-hints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optimizer-hints.md b/optimizer-hints.md index 53ef2dd283ff..2b2595c171e5 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -515,7 +515,7 @@ EXPLAIN SELECT /*+ INDEX_LOOKUP_PUSHDOWN(t1, a) */ a, b FROM t1; ### NO_INDEX_LOOKUP_PUSHDOWN(t1_name) 从 v8.5.5 版本开始引入 -`NO_INDEX_LOOKUP_PUSHDOWN(t1_name)` 用于显式禁止对指定表执行 `IndexLookUp` 下推。该 Hint 通常与系统变量 [`tidb_index_lookup_pushdown_policy`](/system-variables.md#tidb_index_lookup_pushdown_policy-从-v855-和-v900-版本开始引入) 配合使用。当该变量的值为 `force` 或 `affinity-force` 时,你可以使用此 Hint 阻止特定表下推 `IndexLookUp`。 +`NO_INDEX_LOOKUP_PUSHDOWN(t1_name)` 用于显式禁止对指定表执行 `IndexLookUp` 下推。该 Hint 通常与系统变量 [`tidb_index_lookup_pushdown_policy`](/system-variables.md#tidb_index_lookup_pushdown_policy-从-v855-版本开始引入) 配合使用。当该变量的值为 `force` 或 `affinity-force` 时,你可以使用此 Hint 阻止特定表下推 `IndexLookUp`。 以下示例将 `tidb_index_lookup_pushdown_policy` 变量设置为 `force`,使当前会话中的所有 `IndexLookUp` 算子自动下推。如果在查询中指定了 `NO_INDEX_LOOKUP_PUSHDOWN` Hint,则对应表不会下推 `IndexLookUp`: