如何查看PostgreSQL正在执行的SQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看PostgreSQL正在执行的SQL相关的知识,希望对你有一定的参考价值。
参考技术A 您好SELECT
procpid,
start,
now() - start AS lap,
current_query
FROM
(SELECT
backendid,
pg_stat_get_backend_pid(S.backendid) AS procpid,
pg_stat_get_backend_activity_start(S.backendid) AS start,
pg_stat_get_backend_activity(S.backendid) AS current_query
FROM
(SELECT pg_stat_get_backend_idset() AS backendid) AS S
) AS S
WHERE
current_query <> '<IDLE>'
ORDER BY
lap DESC;
procpid:进程id
start:进程开始时间
lap:经过时间
current_query:执行中的sql
怎样停止正在执行的sql
SELECT pg_cancel_backend(进程id);
或者用系统函数
kill -9 进程id;
仅供参考· 参考技术B SELECT
procpid,
start,
now() - start AS lap,
current_query
FROM
(SELECT
backendid,
pg_stat_get_backend_pid(S.backendid) AS procpid,
pg_stat_get_backend_activity_start(S.backendid) AS start,
pg_stat_get_backend_activity(S.backendid) AS current_query
FROM
(SELECT pg_stat_get_backend_idset() AS backendid) AS S
) AS S
WHERE
current_query <> '<IDLE>'
ORDER BY
lap DESC;
procpid:进程id
start:进程开始时间
lap:经过时间
current_query:执行中的sql
怎样停止正在执行的sql
SELECT pg_cancel_backend(进程id);
或者用系统函数
kill -9 进程id;本回答被提问者和网友采纳
如何查看用户在 PostgreSQL 中执行的查询?
【中文标题】如何查看用户在 PostgreSQL 中执行的查询?【英文标题】:How to see the queries executed by a user in PostgreSQL? 【发布时间】:2021-06-04 10:44:06 【问题描述】:我们如何检查用户在 PostgreSQL 数据库中执行的查询?我有一个用例,其中一些应用程序(AWS EMR、Python 脚本)每天在 PostgreSQL DB 上执行查询。如果我能在任何失败的情况下查看/记录最后执行的查询,那将很有帮助。我尝试检查pg_stat_activity
表,但它列出了数据库服务器内部执行的查询。有关此问题的任何指示都会有所帮助。
在 AWS Redshift 中,我们通过表 STV_RECENTS、STL_QUERY 来实现这一点。我正在寻找类似的功能/解决方案,也可以通过任何其他方法来实现这一点。
【问题讨论】:
【参考方案1】:如果您想要一个仪表板并且您正在使用 RDS/Aurora,您可以使用 AWS 提供的性能洞察,默认情况下它会列出用户执行的所有查询。
但是,pg_stat_activity 给出了启动正在执行的查询的用户名,您可以使用下面的查询,它会告诉您查询花费了多少时间,启动此查询的用户名以及文本查询
select now()-query_start,usename,query from pg_stat_activity where state='active';
您可以设置一个 cron 并将此数据附加到文本文件中 参考: How to use pg_stat_activity? https://www.postgresql.org/docs/9.2/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW
【讨论】:
怀疑这在 Redshift 中不可用。以上是关于如何查看PostgreSQL正在执行的SQL的主要内容,如果未能解决你的问题,请参考以下文章