diff --git a/sql-plan-management.md b/sql-plan-management.md index 12a565b1a9df..7ae85b9b5346 100644 --- a/sql-plan-management.md +++ b/sql-plan-management.md @@ -472,6 +472,22 @@ SHOW binding_cache status; 1 row in set (0.00 sec) ``` +### 绑定使用情况统计 + +从 v8.5.5 和 v9.0.0 开始,TiDB 引入了 [`tidb_enable_binding_usage`](/system-variables.md#tidb_enable_binding_usage-new-in-v854-and-v900) 系统变量,用于控制是否收集 SQL 执行计划绑定的使用统计信息。 + +当此变量设置为 `ON` 时,TiDB 会每六个小时将绑定使用情况的统计信息写入 `mysql.bind_info` 表。你可以使用这些统计信息来识别未使用的绑定,并优化绑定管理策略,例如删除不再需要的绑定或调整现有绑定以提高查询性能。 + +```sql +SELECT sql_digest, last_used_date FROM mysql.bind_info LIMIT 1; + ++------------------------------------------------------------------+----------------+ +| sql_digest | last_used_date | ++------------------------------------------------------------------+----------------+ +| 5d3975ef2160c1e0517353798dac90a9914095d82c025e7cd97bd55aeb804798 | 2025-10-21 | ++------------------------------------------------------------------+----------------+ +``` + ## 利用 Statement Summary 表获取需要绑定的查询 [Statement Summary](/statement-summary-tables.md) 的表中存放了近期的 SQL 相关的执行信息,如延迟、执行次数、对应计划等。你可以通过查询 Statement Summary 表得到符合条件查询的 `plan_digest`,然后[根据历史执行计划创建绑定](/sql-plan-management.md#根据历史执行计划创建绑定)。 diff --git a/system-variables.md b/system-variables.md index 93952c7a0e45..4be325de4244 100644 --- a/system-variables.md +++ b/system-variables.md @@ -1765,6 +1765,15 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1; - 默认值:`OFF` - 该变量控制是否启用废弃的 batch-dml 特性。启用该变量后,部分语句可能会被拆分为多个事务执行,这是非原子性的,使用时需谨慎。使用 batch-dml 时,必须确保正在操作的数据没有并发操作。要使该变量生效,还需要为 `tidb_batch_dml_size` 指定一个正值,并启用 `tidb_batch_insert` 和 `tidb_batch_delete` 中的至少一个。 +### `tidb_enable_binding_usage` 从 v8.5.5 和 v9.0.0 版本开始引入 + +- 作用域: GLOBAL +- 是否持久化到集群: 是 +- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否 +- 类型:布尔型 +- 默认值:`ON` +- 该变量控制是否收集 SQL 执行计划绑定的使用统计信息。当设置为 `ON` 时,TiDB 会每六个小时将 SQL 执行计划绑定的使用统计信息写入 `mysql.bind_info` 表。 + ### `tidb_enable_cascades_planner` > **警告:**