DBeaver查询历史默认不自动清除,需手动配置“启用日志+保留天数+最大条目数”双限策略,并定期使用Clear log按钮或快捷键清空;旧版本仅启动时清理,25.3.0+支持每5分钟定时扫描。

查询历史默认不自动清除,必须手动配置保留策略
DBeaver 的 QueryLogViewer 默认会持续记录所有执行过的 SQL,除非你明确设置过期时间或手动清空,否则历史记录会越积越多,占用内存、拖慢面板响应,甚至在打开大型日志时卡顿。它不会像浏览器缓存那样“自动清理”,也没有“最近7天自动删除”这类默认行为。
关键点在于:历史记录的生命周期由两个配置共同控制——是否启用日志 + 保留时长。缺一不可。
-
Enable query history logging必须勾选(路径:编辑 → 偏好设置 → Database → Query Manager),否则根本不会记录 -
Max log entries和Max log age (days)才决定何时“自动丢弃旧条目”——注意:这是后台裁剪,不是实时删除,只在刷新日志或启动时触发 - 如果只设了
Max log age但没设Max log entries,DBeaver 可能因内存压力突然卡死,尤其在高频率执行 SQL 的场景下
如何设置自动清理:保留天数 + 条目上限双保险
单纯依赖“保留天数”不够稳。比如你设了 30 天,但某天批量跑了几千条脚本,日志瞬间膨胀到 5 万行,DBeaver 仍会全部加载进内存,面板可能直接无响应。推荐同时限制条目数:
- 打开
编辑 → 偏好设置 → Database → Query Manager - 勾选
Enable query history logging - 填入
Max log age (days):建议 15–30(审计需求强可调高) - 填入
Max log entries:建议 2000–5000(超过此数,最老的记录会被自动移除) - 点击
应用并关闭,重启 SQL 编辑器使配置生效(部分版本需重启 DBeaver)
注意:Max log entries 是硬限制,达到后新记录写入时,系统会按时间顺序踢掉最老的若干条,保证总数不超;而 Max log age 是软限制,仅用于定期扫描清理,不保证即时生效。
手动清空历史记录的三种可靠方式
当配置还没生效,或者你想立刻释放内存、重置状态时,别依赖“右键删除单条”——太慢且易漏。用下面任一方式可清空全部:
- 在查询日志面板(
Alt+Shift+Q打开)顶部工具栏,点击垃圾桶图标Clear log按钮(有确认弹窗) - 快捷键
Ctrl+Shift+L(部分版本为Ctrl+Alt+L,可在编辑 → 偏好设置 → 用户界面 → 快捷键中搜索 “clear query log” 确认) - 命令行方式(仅限调试):关闭 DBeaver,删除用户目录下的
.dbeaver4/data/.metadata/.plugins/org.jkiss.dbeaver.core/queries.log文件(路径因版本和 OS 而异,Windows 通常在%APPDATA%\DBeaverData\workspace6\.metadata\.plugins\org.jkiss.dbeaver.core\)
最后一种方式最彻底,但会连带清除标签、筛选偏好等元数据,日常慎用。
容易被忽略的兼容性细节
不同 DBeaver 版本对清理逻辑的实现有差异,尤其影响自动化效果:
- 25.2.x 及之前版本:
Max log age仅在启动时检查一次,运行中不会主动清理过期条目 - 25.3.0+(含当前 25.3.3):增加了后台定时扫描,默认每 5 分钟检查一次过期记录,清理更及时
- 如果你用的是企业版(EE),
Query Manager配置项位置略有不同,在Database → Enterprise → Query Manager - 某些数据库驱动(如旧版 MySQL Connector/J)在执行失败时可能不触发日志写入,导致你以为“没记录”,实际是驱动层跳过了日志事件上报
真正稳定的清理,靠的是配置双限 + 定期手动触发 Clear log,而不是指望“自动”二字包打天下。


















