有没有一个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