我的计算机上有一个 PostgreSQL 数据库,并且我有一个在其上运行查询的应用程序。
如何查看在我的数据库上运行了哪些查询?
我使用 Linux 计算机和 pgadmin。
我的计算机上有一个 PostgreSQL 数据库,并且我有一个在其上运行查询的应用程序。
如何查看在我的数据库上运行了哪些查询?
我使用 Linux 计算机和 pgadmin。
开启服务器日志:
log_statement = all
这将记录对数据库服务器的每次调用。
我不会log_statement = all
在生产服务器上使用。产生巨大的日志文件。
关于日志记录参数的手册:
log_statement
(enum
)控制记录哪些 SQL 语句。有效值为
none
(off)、ddl
、mod
和all
(所有语句)。[...]
重置log_statement
参数需要服务器重新加载 ( SIGHUP
)。不需要重新启动。阅读有关如何设置参数的手册。
不要将服务器日志与 pgAdmin 的日志混淆。两种不同的东西!
如果您有权访问文件(远程服务器可能不是这种情况)并正确设置,您还可以查看 pgAdmin 中的服务器日志文件。在 pgadmin III 中,查看:Tools -> Server status
. 该选项已在 pgadmin4 中删除。
vim
我更喜欢使用(或您选择的任何编辑器/阅读器)阅读服务器日志文件。
与日志记录技术相关时,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 日志。
我在 brew 的 mac 安装上找到了 /usr/local/var/log/postgres.log 的日志文件。
在使用带有 postgres 10.6 的Django时,默认情况下启用了日志记录,我能够简单地执行以下操作:
tail -f /var/log/postgresql/*
Ubuntu 18.04、django 2+、python3+
如果使用此日志目录名称在 postgresql.conf 中启用了日志配置,您可以在 pg_log 文件夹中看到。