我想看看在实时 Django 应用程序上正在执行哪些查询,以及它们占用了多少内存。我读过这pg_stat_activity
对监控 Postgres 数据库很有用。
我查看了 Postgres 文档,但我有一个非常简单的问题,似乎没有在那里得到回答。
我该如何开始pg_stat_activity
?我输入什么来使用它,我在哪里输入它?
我想看看在实时 Django 应用程序上正在执行哪些查询,以及它们占用了多少内存。我读过这pg_stat_activity
对监控 Postgres 数据库很有用。
我查看了 Postgres 文档,但我有一个非常简单的问题,似乎没有在那里得到回答。
我该如何开始pg_stat_activity
?我输入什么来使用它,我在哪里输入它?
有关“Postgres 查询执行时间”的问题,请参阅这个密切相关的答案。
pg_stat_activity
是pg_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
模块进行日志分析。
登录 PGAdmin,选择您的数据库并右键单击您的数据库。然后单击查询工具运行您的查询并运行,
Select * from pg_stat_activity;
它将向您显示所有可用的统计信息,并且您有权访问。