DBeaver 性能监控:3 步追踪 SQL 慢查询并自动告警
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
凌晨接口突然变慢,翻遍应用日志只看到超时记录,却始终定位不到是哪条 SQL 拖了后腿。DBeaver 性能监控要解决的就是这件事:让每条 SQL 的执行耗时被如实记录,在仪表盘上观察趋势,超过阈值时自动提醒你。整个过程只用内置功能,不用额外安装插件。
从实现上看,这套能力由两部分协作:SQL 编辑器在执行时收集执行指标,仪表盘模块和通知系统负责展示与分发。下面按"记录 → 展示 → 告警"的顺序配置一遍。
让慢查询现形:开启执行耗时追踪
先给执行过程"开灯":
- 打开 DBeaver,进入偏好设置(Preferences)。
- 依次展开
Database→SQL Editor→Execution。 - 勾选 "Enable execution time tracking",让编辑器为每条 SQL 记录执行耗时。
- 顺手设定默认超时阈值——建议从 5 秒开始,超过这个值的语句更容易被注意到。
为什么要设超时:没有上限的语句一旦跑飞,编辑器只能干等,阈值能帮你尽早发现这类问题。
⚠️ 避坑提示:阈值不是"禁止执行超过 X 秒的查询",它只是执行超时控制的初始值,真正要慢的是哪条语句,还得靠上面的耗时记录去对账。
执行相关命令的定义在 plugins/org.jkiss.dbeaver.ui.editors.sql/ 的 plugin.xml 中,例如org.jkiss.dbeaver.ui.editors.sql.run.statement,就是"执行当前 SQL 语句"这个动作背后的命令。
把指标搬上仪表盘
单条语句的时间记下来还不够,你得看到整体趋势:
- 主菜单选择
Window→Show View→Dashboard。 - 点击 "Add Widget",选择 "SQL Execution Metrics"。
- 监控维度建议保留三项:执行耗时、CPU 占用、行数影响——分别对应"慢不慢""吃不吃资源""动了多少数据"。
- 数据刷新频率建议设在 5~10 秒,太频繁只会徒增查询开销。📊
仪表盘面板支持自定义布局,相关配置集中在 plugins/org.jkiss.dbeaver.model.dashboard/ 这个模块里,监控哪些库、摆哪些组件都可以按团队习惯调整。
慢的时候自动喊你:配置性能告警
盯着仪表盘看容易漏,把告警配好才算闭环:
- 导航至
Preferences→Notifications→Performance Alerts。 - 触发条件按需勾选:
- 执行时间超过阈值,例如 10 秒;
- 全表扫描警告;
- 锁等待超时。
- 通知方式可以叠用:桌面弹窗最快,系统日志适合事后排查;选择邮件通知的话需要先配好 SMTP 再启用。🔔
阈值不必一步到位:OLTP 这类高并发业务建议设得低一些,批处理场景放宽也没关系。通知能力的实现位于 plugins/org.jkiss.dbeaver.model.ai/,其中预留了扩展点,方便后续自定义告警规则。
选做:接一个自定义监控器
如果你有特殊规则(比如只盯某几张表的查询),可以在自己的插件中实现SQLExecutionListener,在执行完成的回调里比较耗时、超限则发通知,然后在 plugin.xml 中注册:
<extension point="org.jkiss.dbeaver.sqlExecutionListener"> <listener class="com.example.CustomSQLMonitor"/> </extension>逻辑保持简单即可,一个回调里比较阈值、打日志或触发通知。开发细节可参考 docs/devel.txt。
写在最后
三步走完,这条链路就齐了:执行耗时追踪打底,仪表盘看趋势,告警兜底。日常再配合EXPLAIN看执行计划,基本能覆盖大部分 SQL 慢查询的定位场景。监控配置本身也值得用版本控制管理起来,相关打包见 plugins/org.jkiss.dbeaver.git.feature/。
觉得有用的话,欢迎给仓库点个 Star。下一篇打算聊聊 DBeaver 数据迁移的性能优化。
【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考