PostgreSQL如何查看已运行的查询

时间:2011-11-21 07:01:59

标签: database postgresql pgadmin

我的计算机上有一个PostgreSQL数据库,我有一个运行查询的应用程序。

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

我使用Linux计算机和pgadmin。

5 个答案:

答案 0 :(得分:47)

开启服务器日志:

log_statement = all

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

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

  

log_statementenum

     

控制记录哪些SQL语句。有效值为none(关闭),ddlmodall(所有语句)。 [...]

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

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

如果您可以访问文件(可能不是远程服务器的情况)并且正确设置,您还可以查看pgAdmin中的服务器日志文件。看看:Tools -> Server status。在manual for pgAdmin III中了解有关服务器状态窗口的更多信息。

我更喜欢用vim(或您选择的编辑/读者)阅读服务器日志文件。

答案 1 :(得分:40)

与日志记录技术相关时,PostgreSql非常先进

日志存储在Installationfolder/data/pg_log folder中。日志设置放在postgresql.conf文件中。

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

中启用CSV格式更改
log_destination = 'stderr,csvlog'   
logging_collector = on

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

log_min_duration_statement = 0

要在数据库中查看活动查询,请使用

SELECT * FROM pg_stat_activity

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

log_statement = 'all'           # none, ddl, mod, all

有关记录查询的详细信息,请参阅PostgreSql Log

答案 2 :(得分:4)

我在brew上的mac安装上找到了/usr/local/var/log/postgres.log中的日志文件。

答案 3 :(得分:0)

在Postgres 10.6中使用 Django 时,默认情况下启用了日志记录,而我能够做到:

tail -f /var/log/postgresql/*

Ubuntu 18.04,Django 2 +,python3 +

答案 4 :(得分:0)

如果在postgresql.conf中使用此日志目录名称启用了日志配置,则可以在pg_log文件夹中看到。