49

我想看看在实时 Django 应用程序上正在执行哪些查询,以及它们占用了多少内存。我读过这pg_stat_activity对监控 Postgres 数据库很有用。

查看了 Postgres 文档,但我有一个非常简单的问题,似乎没有在那里得到回答。

我该如何开始pg_stat_activity?我输入什么来使用它,我在哪里输入它?

4

2 回答 2

66

有关“Postgres 查询执行时间”的问题,请参阅这个密切相关的答案

pg_stat_activitypg_catalog模式中的一个视图。

您可以SELECT像任何其他表一样通过 ing 查询它,例如SELECT * FROM pg_stat_activity. 您链接到的手册页解释了它的列。

您有时会发现自己想要加入其他表,例如pg_class(表)、pg_namespace(模式)等。

限制

pg_stat_activity不公开有关后端内存使用的信息您需要为此使用操作系统级别的工具。但是,它确实会告诉您进程 ID、活动用户、当前正在运行的查询、活动状态、上次查询开始的时间等。它有助于识别长时间运行的idle in transaction会话、非常长时间运行的查询等。

坦率地说,PostgreSQL 的内置监控相当初级。这是不那么令人兴奋的领域之一,商业客户通常不愿意资助它。大多数人将工具check_postgres与 Icinga 和 Munin 结合使用,或者使用 Zabbix 或其他外部监控代理。

在您的情况下,听起来您确实想要pg_stat_statements和/或PgBadger使用合适的日志记录设置和可能的auto_explain模块进行日志分析。

于 2013-07-15T13:20:34.833 回答
4

登录 PGAdmin,选择您的数据库并右键单击您的数据库。然后单击查询工具运行您的查询并运行,

Select * from pg_stat_activity;

它将向您显示所有可用的统计信息,并且您有权访问。

于 2021-04-28T19:22:38.350 回答