我想监控从应用程序发送到数据库的查询.为此,我发现返回的行中有pg_stat_activity
行是"in transaction",但更多的时候不是这样.我要么做错了什么,要么速度不够快,看不到问题的答案,要么感到困惑,或者以上所有的一切!
有人能推荐一种最简单的方法来监控针对PostgreSQL的查询吗?我更喜欢某种易于使用的基于用户界面的解决方案(例如:SQL Server的"探查器"),但我不太挑剔.
我想监控从应用程序发送到数据库的查询.为此,我发现返回的行中有pg_stat_activity
行是"in transaction",但更多的时候不是这样.我要么做错了什么,要么速度不够快,看不到问题的答案,要么感到困惑,或者以上所有的一切!
有人能推荐一种最简单的方法来监控针对PostgreSQL的查询吗?我更喜欢某种易于使用的基于用户界面的解决方案(例如:SQL Server的"探查器"),但我不太挑剔.
使用PostgreSQL 8.4或更高版本,您可以使用contrib module pg_stat_statements来收集数据库服务器的查询执行统计信息.
在数据库中运行contrib module pg_stat_statements.sql
(在ubuntu上可以在/usr/share/postgresql/<version>/contrib
中找到)的SQL脚本,并将此示例配置添加到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
要查看实时执行的查询,您可能只需要将服务器日志(log)配置为显示所有查询或具有最短执行时间的查询.为此,在postgresql中设置logging configuration parameters log_statement
和log_min_duration_statement
.相应地.