2014-02-07 17 views
0

我目前正在嘗試在應用程序中調試「空閒事務」方案。通過查看pg_state_activity,我可以找到狀態爲「事務中空閒」的查詢的進程ID和事務開始時間。給定事務中的所有查詢

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

有什麼辦法識別對應於與「在交易閒置的」查詢事務中執行的所有查詢列表

回答

2

你試圖獲得的由運行的所有以前的聲明列表交易現在在交易中顯示爲閒置?

如果是這樣,那麼在SQL級別上沒有簡單安全的方法。您應該使用CSV日誌記錄模式來分析查詢歷史記錄並將查詢分組到事務中。有意思的是,你可以用SQL來做這件事,COPY將CSV加入到PostgreSQL表格中以便於分析。

或者,使用普通文本日誌,並設置log_line_prefix,其中包含事務ID和進程ID。

(我敢發誓我看到了所收集的查詢跟蹤調試的延伸,但現在找不到它,我不知道它是有用的,你必須在問題連接上運行命令提取收集的數據)。

相關問題