我想监视从应用程序发送到我的数据库的查询。为此,我发现pg_stat_activity
,但更常见的是,返回的行在“事务”中读取。我要么做错了,要么看得不快,看得很困难,或者以上所有都搞错了!
有人可以推荐最耐用的方法来监控针对PostgreSQL运行的查询吗?我更喜欢某种易于使用的基于UI的解决方案(例如:SQL Server的“Profiler”),但我不是太挑剔。
答案 0 :(得分:26)
PgAdmin提供了一个非常易于使用的工具,称为服务器监视器
(工具 - > ServerStatus)
答案 1 :(得分:17)
使用PostgreSQL 8.4或更高版本,您可以使用 contrib模块 pg_stat_statements来收集数据库服务器的查询执行统计信息。
在数据库中运行此contrib模块pg_stat_statements.sql
的SQL脚本(在ubuntu上,可以在/usr/share/postgresql/<version>/contrib
中找到),并将此示例配置添加到postgresql.conf
(需要重新启动) ):
custom_variable_classes = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = top # top,all,none
pg_stat_statements.save = off
要查看实时执行的查询,您可能只想将服务器日志配置为以最短的执行时间显示所有查询或查询。为此,请在postgresql.conf中相应地设置logging configuration parameters log_statement
和log_min_duration_statement
。
答案 2 :(得分:0)
不幸的是,我自己没有尝试过,但我认为pgFouine可以向您展示一些统计数据。
虽然它似乎没有实时显示您的查询,而是之后生成查询报告,也许它仍然满足您的需求?
答案 3 :(得分:0)
pg_activity
是我们使用的。
https://github.com/dalibo/pg_activity
这是一个很棒的工具,具有类似top
的界面