IDEA 控制台打印 Explain 问题排查(RestfulBox版)
摘要: 近期IDEA插件RestfulBox更新至6.10.0后,项目启动时自动打印MySQL的EXPLAIN日志,原因是插件默认启用了SQL分析功能。
目录
问题排查
问题描述:在近期更新 idea 插件并重启 idea 后,启动项目疯狂打印 explain 日志,项目中未配置但仍然打印。
原因分析:
- 安装了插件 RestfulBox,在近期更新为版本 6.10.0 后,默认启用 Explain 日志


解决方案:idea -> Settings -> RestfulBox -> Java Tool -> MySQL EXPLAIN -> 取消勾选启用
知识扩展
"-javaagent:C:\Users\***\AppData\Roaming\JetBrains\IntelliJIdea2024.3\plugins\RestfulBox\lib\mysql-explain-agent-1.2.0-with-dependencies.jar"
"-Dmysql.showSQL=false"
"-Dmysql.showSQL.filter="
"-Dmysql.explain.filter=INSERT,UPDATE,DELETE"
"-Dmysql.explain.types=ALL"
"-Dmysql.explain.extras=Using filesort,Using temporary"
配置说明:
1. -javaagent:…\mysql-explain-agent-1.2.0-with-dependencies.jar
-
作用:以 Java Agent 方式挂载一个字节码增强代理。
-
功能:该 Agent 会拦截应用中所有 JDBC 执行的 SQL 语句,并根据后续配置决定是否:
- 打印原始 SQL
- 自动执行
EXPLAIN分析执行计划 - 过滤特定类型的 SQL
-
来源:这是 RestfulBox 插件(一款 IDEA 中用于 API 调试和数据库分析的工具)自带的诊断模块,仅在开发阶段通过 IDEA 启动时生效,不影响生产部署。
✅ 本质:一个开发辅助工具,用于实时分析 SQL 性能。
2. -Dmysql.showSQL=false
-
作用:关闭 SQL 打印。
-
说明 :
- 如果设为
true,会在控制台打印所有被拦截的 SQL 语句。 - 设为
false后,既不打印 SQL,也不执行EXPLAIN(因为 EXPLAIN 是基于 SQL 触发的)。
- 如果设为
-
✅ 这是最直接关闭 EXPLAIN 日志的方式。
💡 即使其他
explain.*配置存在,只要showSQL=false,就不会做任何分析。
3. -Dmysql.showSQL.filter=
-
作用:设置 SQL 打印的过滤规则(排除某些 SQL)。
-
格式:逗号分隔的关键词列表,如
QRTZ_,COUNT(0)。 -
当前值为空:表示 不过滤任何 SQL(但因为
showSQL=false,此配置实际未生效)。 -
示例:
-
若设为
QRTZ_,则包含QRTZ_的 SQL(如 Quartz 表查询)不会被打印或分析。
4. -Dmysql.explain.filter=INSERT,UPDATE,DELETE
-
作用:跳过对指定类型 SQL 的
EXPLAIN分析。 -
原理 :
EXPLAIN只对SELECT有效,对INSERT/UPDATE/DELETE执行会报错或无意义。- 此配置表示:遇到这三类语句,不执行 EXPLAIN。
-
注意 :
-
SELECT不在此列表中 → 所有SELECT仍会被分析(前提是showSQL=true)。 -
如果你想完全关闭 EXPLAIN,应设为:
-Dmysql.explain.filter=SELECT,INSERT,UPDATE,DELETE或更简单:直接用
-Dmysql.showSQL=false
-
5. -Dmysql.explain.types=ALL
-
作用:只对执行计划中
type列满足条件的 SQL 输出警告或高亮。 -
可选值(MySQL EXPLAIN 的 type 字段):
system<const<eq_ref<ref<range<index<ALLALL表示全表扫描(性能最差)
-
当前值
ALL:表示 只要执行计划中出现type=ALL,就标记为需优化。 -
用途:帮助开发者快速发现全表扫描的慢查询。
⚠️ 此配置 不影响是否执行 EXPLAIN,只影响分析结果的判断逻辑。
6. -Dmysql.explain.extras=Using filesort,Using temporary
-
作用:只对执行计划中
Extra列包含指定内容的 SQL 发出警告。 -
常见
Extra值:Using filesort:需要额外排序(无索引支持 ORDER BY)Using temporary:使用临时表(常见于 GROUP BY + ORDER BY 不一致)- 这两者通常意味着 性能瓶颈
-
当前配置:当 EXPLAIN 结果包含这两项时,工具会高亮提示。
⚠️ 同样,此配置 仅用于分析结果过滤,不控制是否执行 EXPLAIN。
更多推荐

所有评论(0)