PostgreSQL如何查看已运行的查询

kam*_*aci 51 database postgresql pgadmin

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

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

我用的是Linux电脑和pgadmin.

Erw*_*ter 55

打开服务器日志:

log_statement = all
Run Code Online (Sandbox Code Playgroud)

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

我不会log_statement = all在生产服务器上使用.生成大量日志文件.
有关日志记录参数的手册:

log_statement(enum)

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

重置log_statement参数需要服务器重新加载(SIGHUP).重新启动是没有必要的.阅读有关如何设置参数的手册.

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

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

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

  • @kamaci:我用其他信息修改了我的答案.按照我提供的链接获取更多信息. (2认同)

arv*_*ind 46

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

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

日志格式通常设置为stderr.但建议使用CSV日志格式.为了启用CSV格式更改

log_destination = 'stderr,csvlog'   
logging_collector = on
Run Code Online (Sandbox Code Playgroud)

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

log_min_duration_statement = 0
Run Code Online (Sandbox Code Playgroud)

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

SELECT * FROM pg_stat_activity
Run Code Online (Sandbox Code Playgroud)

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

log_statement = 'all'           # none, ddl, mod, all
Run Code Online (Sandbox Code Playgroud)

有关日志记录查询的更多信息,请参阅PostgreSql日志.


Mic*_*ael 5

我从brew安装Mac时,在/usr/local/var/log/postgres.log上找到了日志文件。