Skip to content

Commit 3fa9ae5

Browse files
authored
SPM: add binding usage (#21036)
1 parent 3d50207 commit 3fa9ae5

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

sql-plan-management.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,24 @@ SHOW binding_cache status;
472472
1 row in set (0.00 sec)
473473
```
474474

475+
### 绑定使用情况统计 <span class="version-mark">从 v9.0.0 版本开始引入</span>
476+
477+
你可以使用 [`tidb_enable_binding_usage`](/system-variables.md#tidb_enable_binding_usage-从-v900-版本开始引入) 系统变量(默认为 `ON`)来控制是否收集 SQL 执行计划绑定的使用统计信息。
478+
479+
当此变量为 `ON` 时,TiDB 会每六个小时将绑定使用情况的统计信息写入 `mysql.bind_info` 表。你可以使用这些统计信息来识别未使用的绑定,并优化绑定管理策略,例如删除不再需要的绑定或调整现有绑定以提高查询性能。
480+
481+
例如,你可以执行以下 SQL 语句来检查绑定的最后使用时间:
482+
483+
```sql
484+
SELECT sql_digest, last_used_date FROM mysql.bind_info LIMIT 1;
485+
486+
+------------------------------------------------------------------+----------------+
487+
| sql_digest | last_used_date |
488+
+------------------------------------------------------------------+----------------+
489+
| 5d3975ef2160c1e0517353798dac90a9914095d82c025e7cd97bd55aeb804798 | 2025-10-21 |
490+
+------------------------------------------------------------------+----------------+
491+
```
492+
475493
## 利用 Statement Summary 表获取需要绑定的查询
476494

477495
[Statement Summary](/statement-summary-tables.md) 的表中存放了近期的 SQL 相关的执行信息,如延迟、执行次数、对应计划等。你可以通过查询 Statement Summary 表得到符合条件查询的 `plan_digest`,然后[根据历史执行计划创建绑定](/sql-plan-management.md#根据历史执行计划创建绑定)。

system-variables.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1823,6 +1823,15 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1;
18231823
- 默认值:`OFF`
18241824
- 该变量控制是否启用废弃的 batch-dml 特性。启用该变量后,部分语句可能会被拆分为多个事务执行,这是非原子性的,使用时需谨慎。使用 batch-dml 时,必须确保正在操作的数据没有并发操作。要使该变量生效,还需要为 `tidb_batch_dml_size` 指定一个正值,并启用 `tidb_batch_insert``tidb_batch_delete` 中的至少一个。
18251825

1826+
### `tidb_enable_binding_usage` <span class="version-mark">从 v9.0.0 版本开始引入</span>
1827+
1828+
- 作用域: GLOBAL
1829+
- 是否持久化到集群: 是
1830+
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
1831+
- 类型:布尔型
1832+
- 默认值:`ON`
1833+
- 该变量控制是否收集 SQL 执行计划绑定的使用统计信息。当设置为 `ON` 时,TiDB 会每六个小时将 SQL 执行计划绑定的使用统计信息写入 `mysql.bind_info` 表。
1834+
18261835
### `tidb_enable_cascades_planner`
18271836

18281837
> **警告:**

0 commit comments

Comments
 (0)