PostgreSQL如何查看哪些查询已经运行

问题描述:

我在我的计算机上有一个PostgreSQL数据库,并且我有一个应用程序在其上运行查询。PostgreSQL如何查看哪些查询已经运行

如何查看哪些查询在我的数据库上运行?

我使用Linux计算机和pgadmin。

+0

有关您的应用程序是什么样子以及它如何访问数据库的任何细节? –

打开服务器日志:

log_statement = all 

这将记录每次调用数据库服务器。

我不会在生产性服务器上使用log_statement = all。生成巨大的日志文件。
The manual about logging-parameters:

log_statementenum),该SQL语句被记录

控件。有效值为none(关闭),ddl,modall(所有语句)。 [...]

重置log_statement参数需要服务器重载(SIGHUP)。重新启动是而不是必要的。阅读the manual on how to set parameters

请勿将服务器日志与pgAdmin日志混淆。两件不同的事情!

如果您有权访问这些文件(对于远程服务器可能不是这种情况)并且正确设置,您还可以查看pgAdmin中的服务器日志文件。看看:Tools -> Server status。详细了解manual for pgAdmin III中的服务器状态窗口。

我更喜欢用vim(或您选择的编辑器/阅读器)阅读服务器日志文件。有关测井技术

日志存储在Installationfolder /数据/ pg_log文件夹时

+0

Brandstetter我只会看到日志并关闭它。仅仅是为了使log_statement = all就足够了?我已经打开服务器状态,它询问我有关安装软件包的一些信息,但它打开了一个窗口并写道:此服务器不支持日志。我应该重新启动我的postgresql吗? – kamaci

+2

@kamaci:我用附加信息修改了我的答案。按照我提供的更多链接。 –

PostgreSQL是非常先进的。日志设置被放置在postgresql.conf文件中。

日志格式通常设置为stderr。但建议使用CSV日志格式。为了使在

  • log_destination = '标准错误,csvlog'
  • logging_collector CSV格式变化=上

为了记录所有的查询,对于新安装,设置分非常有用。执行时间查询

  • log_min_duration_statement = 0

为了查看数据库的主动查询,使用

  • SELECT * FROM和pg_stat_activity

要记录特定查询设置查询类型

  • log_statement = '所有' #无,DDL,国防部,所有

这是一个很好的链接有关记录的详细信息的查询

我发现日志文件位于/usr/local/var/log/postgres.log中,位于brew安装的mac上。