为什么atomikos定期ping pg_prepared_xacts

时间:2018-05-24 14:15:47

标签: java postgresql distributed-transactions atomikos

我有弹簧启动应用程序,它在两个数据库Postgres中进行更新。我使用Atomikos进行分布式事务管理。

我看到我的应用程序每10秒在两个数据库中进行查询: " SELECT gid FROM pg_prepared_xacts where database = current_database()"

我想知道为什么? atomikos有一些属性可以改变时期吗?例如1分钟。如果查询返回一些gid会是什么?

我在网上看了很多关于这个问题,但没有找到答案。

我有一些假设,我想知道正确的答案。

1 个答案:

答案 0 :(得分:0)

  1. 为什么Atomikos ping pg_prepared_xacts?
  2. 它称为“恢复扫描”,目标是在应用程序失败后恢复,或者应用程序出错。因此,在数据库中不会被“孤立”的Atomikos创建的交易。

    1. 有一些属性可以改变时期吗?
    2. 是的,它有:com.atomikos.icatch.recovery_delay。其他有用的属性如下:JtaProperties

      1. 如果查询返回一些gid会是什么?
      2. Atomikos检查返回的gid是否在atomikos事务日志中并且状态为“to commit”。如果是这样,他将提交准备交易,否则他将回滚交易。请注意,Atomikos将处理由他创建的准备交易,并且不会处理其他准备交易。