给定事务中的所有查询

时间:2014-02-07 12:58:29

标签: postgresql postgresql-9.2

我目前正在尝试在我的应用程序中调试“事务中的空闲”方案。我可以通过查看pg_state_activity找出状态为“idle in transaction”的查询的进程ID和事务开始时间。

select pid,query from pg_stat_activity where state='idle in transaction' OR state='idle'

有没有办法识别在与'idle in transaction'的查询相对应的交易中执行的所有查询的列表

1 个答案:

答案 0 :(得分:2)

您是否正在尝试获取事务所运行的所有先前语句的列表,该事务现在在事务中显示为空闲

如果是这样,在SQL级别上没有简单而安全的方法。您应该使用CSV日志记录模式来分析查询历史记录并将查询分组到事务中。很简单,您可以使用SQL执行此操作,COPY将CSV放入PostgreSQL表中以便于分析。

或者,使用普通文本日志,并设置包含事务ID和进程ID的log_line_prefix

(我可能已经发誓我看到了一个收集查询跟踪的调试扩展,但现在找不到它,我不确定它是否有用,因为你必须在问题连接上运行命令 < / em>提取收集的数据。