我在我的电脑上有一个PostgreSQL数据库,并且有一个应用程序在上面运行查询。
我该如何查看在我的数据库上运行了哪些查询?
我使用的是Linux计算机和pgadmin。
我在我的电脑上有一个PostgreSQL数据库,并且有一个应用程序在上面运行查询。
我该如何查看在我的数据库上运行了哪些查询?
我使用的是Linux计算机和pgadmin。
开启服务器日志:
log_statement = all
这将记录每次与数据库服务器的通信。
在生产服务器上不建议使用log_statement = all
,因为会生成巨大的日志文件。
有关日志参数的手册:
log_statement
(enum
)控制要记录哪些SQL语句。有效值包括
none
(关闭),ddl
,mod
和all
(所有语句)。[...]
重置log_statement
参数需要重新加载服务器(SIGHUP
),但不需要重新启动服务器。请阅读设置参数的手册。
不要将服务器日志与pgAdmin的日志混淆。这是两个不同的东西!
如果您有访问权限并正确设置了文件,则还可以在pgAdmin中查看服务器日志文件。在pgadmin III中,可以查看:工具 -> 服务器状态
。该选项已在pgadmin4中删除。
我更喜欢使用vim
(或您选择的任何编辑器/阅读器)来读取服务器日志文件。
PostgreSql在日志记录技术方面非常先进。
日志存储在安装文件夹/data/pg_log
文件夹中。而日志设置则保存在postgresql.conf
文件中。
通常情况下,日志格式被设为stderr
。但是建议使用CSV日志格式。要启用CSV格式,请进行更改
log_destination = 'stderr,csvlog'
logging_collector = on
为了记录所有查询,这对于新安装非常有用,需要为查询设置最小执行时间。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+