有没有一个PostgreSQL等价的SQL Server分析器?
我需要看到提交给PostgreSQL服务器的查询。 通常我会使用SQL Server分析器在SQL Server域中执行此操作,但是我还没有find如何在PostgreSQL中执行此操作。 似乎有相当多的付费工具,我希望有一个开源的变种。
您可以使用log_statementconfiguration设置来获取所有查询到服务器的列表
https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement
只需设置该日志文件path,即可获得该列表。 您也可以将其configuration为仅logging长时间运行的查询。
然后,您可以接受这些查询并对其运行EXPLAIN,以了解它们正在发生的事情。
http://www.designmagick.com/article/23/Using-Explain/Using-Explain/page/2
添加Joshua的答案,查看当前正在运行哪些查询,只需随时发出以下语句(例如,在PGAdminIII的查询窗口中):
SELECT datname,procpid,current_query FROM pg_stat_activity;
示例输出:
datname | procpid | current_query ---------------+---------+--------------- mydatabaseabc | 2587 | <IDLE> anotherdb | 15726 | SELECT * FROM users WHERE id=123 ; mydatabaseabc | 15851 | <IDLE> (3 rows)
我发现pgBadger( http://dalibo.github.io/pgbadger/ ),这是一个很棒的工具,多次拯救了我的生命。 这里是一个报告的例子: http : //dalibo.github.io/pgbadger/samplev4.html 。 如果你打开它并进入“顶部”菜单,你可以看到最慢的查询和耗时的查询。 然后,您可以查询详细信息并查看以小时为单位显示查询的漂亮图表,如果使用详细信息button,则可以以漂亮的forms查看SQL文本。 所以我可以看到这个工具是自由和完美的。
加上约书亚和弗拉德的答案
这个对我有用:
打开postgresql.conf
组:
log_statement ='mod'
log_min_messages = debug2
打开文件夹C:\ Program Files \ PostgreSQL \ 9.6 \ data \ pg_log \
查询将在那里。
我使用postgresql-9.6.5-1