查找PostgreSQL与DBeaver中类似SQL Server Profiler的功能
可用方案参考
方案1:DBeaver内置查询日志(最适合抓取DBeaver GUI操作生成的SQL)
如果你是要查看DBeaver自身操作(包括界面点击触发的各类查询)发往数据库的语句,直接用自带的日志功能即可,和你之前用Profiler抓SSMS操作的体验基本一致:
- 点击顶部菜单栏 窗口 → 首选项
- 左侧导航找到 连接 分类下的 SQL查询日志
- 勾选 启用查询日志,可按需选择是否记录参数、执行耗时,仅看语句的话保留基础配置即可
- 确认配置后打开DBeaver的 查询日志 视图,所有DBeaver发起的SQL都会实时展示在这里,无需修改数据库侧配置
方案2:PostgreSQL原生实时查询能力(适合查看全数据库所有客户端的运行语句)
如果要查看所有连接到PostgreSQL的客户端的实时运行查询,直接查询系统视图pg_stat_activity即可,满足你不需要性能分析的需求:
SELECT pid, query, state, now() - query_start AS run_duration FROM pg_stat_activity WHERE state = 'active' -- 排除当前查询自身 AND query NOT ILIKE '%pg_stat_activity%';
你可以在DBeaver中打开该结果页的自动刷新(右键结果页→自动刷新,最低可设1秒间隔)实现实时查看的效果。
如果需要捕获执行速度很快、手动刷新看不到的短查询,可以临时开启数据库全量日志:
-- 开启所有语句日志,无需重启数据库 ALTER SYSTEM SET log_statement = 'all'; ALTER SYSTEM SET log_min_duration_statement = 0; SELECT pg_reload_conf();
所有语句会写入PostgreSQL的日志文件,使用完记得恢复默认配置避免占用过多磁盘:
-- 恢复默认配置 ALTER SYSTEM RESET log_statement; ALTER SYSTEM RESET log_min_duration_statement; SELECT pg_reload_conf();
内容的提问来源于stack exchange,提问作者user2210516
相关产品推荐
相关产品推荐

