PostgreSQL 9.3在事务中空闲

问题描述 投票:0回答:1

在我们的产品中,有时会发生使用idle in transaction连接锁定数据库的情况。

我正在使用postgresql-9.3(9.4),通过jdbc驱动程序进行java连接。所有连接均设置为自动提交。

只能使用SELECT pg_terminate_backend(PID)解决问题。我不喜欢这样的决定,但是唯一可行的方法就是重启服务。

因此,当我不手动操作事务时,如何解决该问题是一个问题。与Postgres的所有连接都是本地连接,所以我不认为这是网络问题。

更新

好的,毫无疑问-有一个应用程序错误。

想象一下,我们有一个查询:

try(PreparedStatement statement=connection.prepareStatement("update table1 set some_field=1 where id=2")){
    statement.executeUpdate();
}

因此是用于本地连接的简单查询。连接处于活动状态。自动提交是正确的。这种连接为idle in transaction会发生什么问题?

在我们的产品中,有时会发生事务连接处于空闲状态而锁定数据库的情况。我正在使用postgresql-9.3(9.4),通过jdbc驱动程序进行java连接。所有连接都是...

postgresql jdbc sqltransaction
1个回答
0
投票

长时间处于idle in transaction状态的交易是一个应用程序错误,但您可能已经意识到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.