什么是确定是否有未提交的事务的好方法(如果有办法知道它们所建立的连接是否空闲,则可以获得奖励积分)?
非常感谢!
#1 楼
如果要查看有多少个具有打开事务的空闲连接,可以使用:select *
from pg_stat_activity
where (state = 'idle in transaction')
and xact_start is not null;
这将提供以下列表中打开的连接的列表:
已经说过,我无法在具有打开事务的空闲状态下重新创建打开连接。也许其他人可以提供有关如何执行此操作的详细信息。
评论
请注意,状态列仅在9.2中存在。对我来说,正确的状态似乎是“交易空闲”。
– dezso
13年4月11日在16:29
我同意德佐。
–法郎
13年4月12日在2:01
state ='idle'不表示未完成的交易。
– a_horse_with_no_name
2014年12月9日17:23
我无法在具有打开事务的空闲状态下重新创建打开连接。打开与数据库的两个连接,然后键入“ begin;”。合二为一。在另一个运行上面的查询,您将在事务中处于空闲状态。
– X-Istence
16年5月19日在5:19
评论
看看pgtop。您还可以在ps aux的输出中寻找显示“交易空闲”的行。@dezso-pgtop看起来很有趣; Windows是否有等效的软件?
@MaxVernon有一些提示,它应该可以在Windows上运行,但尚未看到任何具体示例。但这仍然是一个(相对)简单的Perl项目,因此...无论如何,它可以在pg_stat *视图上工作。