根据对这个问题的评论,我问了PostgreSQL 9.2中的空闲连接,一些未提交的事务(可能与那些空闲连接有关)可能会导致一些性能问题。

什么是确定是否有未提交的事务的好方法(如果有办法知道它们所建立的连接是否空闲,则可以获得奖励积分)?

非常感谢!

评论

看看pgtop。您还可以在ps aux的输出中寻找显示“交易空闲”的行。

@dezso-pgtop看起来很有趣; Windows是否有等效的软件?

@MaxVernon有一些提示,它应该可以在Windows上运行,但尚未看到任何具体示例。但这仍然是一个(相对)简单的Perl项目,因此...无论如何,它可以在pg_stat *视图上工作。

#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