是否有与SQL Server Profiler等效的PostgreSQL?


82

我需要查看提交给PostgreSQL服务器的查询。通常,我会使用SQL Server事件探查器在SQL Server领域中执行此操作,但是我尚未找到如何在PostgreSQL中执行此操作。似乎有很多付费工具,我希望有一个开源版本。

Answers:


59

您可以使用log_statement配置设置来获取对服务器的所有查询的列表

https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement

只需设置它,然后记录文件路径,就可以得到列表。您还可以将其配置为仅记录长时间运行的查询。

然后,您可以处理这些查询,并对它们运行EXPLAIN,以了解发生了什么情况。

https://www.postgresql.org/docs/9.2/static/using-explain.html


1
完美,对它扔了一个尾巴-f
BozoJoe 2010年

3
好吧,很难将.csv日志文件称为“等效于SQL Server分析器” ...
Feofilakt

31

添加到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)

4
在我的PG(9.3)版本中,我使用以下查询:SELECT datname,pid,usename,application_name,client_addr,FROM pg_stat_activity查询;pg_stat_activity是数据库“ postgresql”的视图
mrmuggles

3
SELECT client_addr,state_change,从pg_stat_activity查询;
德米特里·季亚科夫

3
“查询”列的长度太短,无法显示较长的查询。
DejanJanjušević

25

我发现了pgBadger(http://dalibo.github.io/pgbadger/),它是一个神奇的工具,多次挽救了我的生命。这是报告的示例:http : //dalibo.github.io/pgbadger/samplev4.html。如果打开它并转到“顶部”菜单,则可以看到最慢的查询和耗时的查询。然后,您可以询问详细信息并查看漂亮的图形,这些图形按小时显示查询,如果您使用“详细信息”按钮,则可以以漂亮的形式查看SQL文本。因此,我可以看到该工具是免费且完美的。


2
相当不错的工具。我使用了本教程进行安装,因为官方文档非常冗长:dhis2.org/analysing-postgresql-logs-using-pgbadger
mrmuggles

5
只需注意一下,该工具仅适用于* nix系统,这对Windows用户来说很糟糕
Alex Klaus

+1为OP要求使用Sql Server Profiler之类的工具而不是配置选项来手动提取所需的性能信息。
EAmez


0

您可以使用pg_stat_statements扩展。

如果在docker中运行db,只需在中添加此命令docker-compose.yml,否则只需查看设置的安装说明即可:

command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200

然后在数据库中运行以下查询:

CREATE EXTENSION pg_stat_statements;

现在来看花费更多时间的操作:

SELECT * FROM pg_stat_statements ORDER BY total_time/calls DESC LIMIT 10;

或者在该视图上处理其他查询,以查找所需内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.