【发布时间】:2015-11-19 22:08:56
【问题描述】:
我在我的应用程序代码中发现了一个错误,我已经启动了一个事务,但从未提交或回滚。定期使用连接,每隔 10 秒左右读取一些数据。在pg_stat_activity表中,它的状态被报告为“idle in transaction”,它的backend_start时间是一个多星期前。
这对数据库有什么影响?它是否会导致额外的 CPU 和 RAM 使用?它会影响其他连接吗?这种状态能持续多久?
我正在使用 postgresql 9.1 和 9.4。
【问题讨论】:
-
影响:1.您的数据对其他事务不可见 2.如果您最终不提交 - 您将丢失数据。
-
@zerkms 我对服务器上的处理影响更感兴趣:我意识到所做的任何更改对其他连接都不可见(尽管在这种情况下,它只是读取数据,从不修改任何内容)
-
丢失数据最终不是问题,因为您始终可以使用 SAVEPOINTS。