如何通过编写MySQL触发器监控并记录特定查询的高频使用索引?
- 内容介绍
- 文章标签
- 相关推荐
本文共计788个文字,预计阅读时间需要4分钟。
MySQL 本身不提供触发器机制来监控和控制索引的使用情况。这是一种常见误解。触发器响应的是如下 DML 事件:
下面直接说清楚该怎么做、为什么不能绕开、以及最容易栽跟头的地方。
为什么不能用触发器监控索引使用
触发器本质是表级 DML 副作用钩子,它对 SELECT 完全无感:
- SELECT 不修改数据,不触发任何 BEFORE/AFTER 触发器
- 即使你给目标表建了 10 个触发器,执行 EXPLAIN SELECT ... 或实际查询时,它们一个都不会动
- 没有 ON SELECT 触发器语法,MySQL 不支持,也不打算支持
真正能监控索引使用的三类手段
必须组合使用,缺一不可:
-
EXPLAIN:查单条 SQL 是否走索引。
本文共计788个文字,预计阅读时间需要4分钟。
MySQL 本身不提供触发器机制来监控和控制索引的使用情况。这是一种常见误解。触发器响应的是如下 DML 事件:
下面直接说清楚该怎么做、为什么不能绕开、以及最容易栽跟头的地方。
为什么不能用触发器监控索引使用
触发器本质是表级 DML 副作用钩子,它对 SELECT 完全无感:
- SELECT 不修改数据,不触发任何 BEFORE/AFTER 触发器
- 即使你给目标表建了 10 个触发器,执行 EXPLAIN SELECT ... 或实际查询时,它们一个都不会动
- 没有 ON SELECT 触发器语法,MySQL 不支持,也不打算支持
真正能监控索引使用的三类手段
必须组合使用,缺一不可:
-
EXPLAIN:查单条 SQL 是否走索引。

