原子事务日志 com.atomikos.icatch.enable_logging=false
Atomikos transaction logs com.atomikos.icatch.enable_logging=false
我想了解如果我设置 com.atomikos.icatch.enable_logging=false
分布式事务功能是否适用于我的应用程序
- 我是否理解正确,事务恢复与发生崩溃的情况相关,我们想要完全重新启动同一事务。
- 恢复是否在同一个分布式事务中进行?
- 我的应用程序可以容忍失败,因为失败总是可以通过新事务从头开始重新启动。这是否意味着在我的情况下可以设置
com.atomikos.icatch.enable_logging=false
- 如果不是所有分布式事务的参与者都已提交,是否会
com.atomikos.icatch.enable_logging=false
导致数据库状态不一致?
Update 在这个问题之后我被触发去学习更多关于我在这里描述的分布式事务的内部结构:
如果您想要分布式事务,那么您可能还想启用日志记录。禁用它实际上只是为了测试配置。
好吧,我花了一些时间才弄明白。答案是否定的,如果我们禁用 com.atomikos.icatch.enable_logging,我们将无法保证事务的一致性,并且我们最终可能会在一个数据库中提交某些内容而在另一个数据库中未提交。
在XA事务中我们有两个主要角色。交易协调者和交易参与者。涉及两个事务日志。一方面是协调者的事务日志,另一方面是参与者的事务日志。
发生的事情是,首先 XA 事务中的所有参与者都将自己注册到协调器。
XA_START
然后是记录阶段,其中所有 sql 语句都发送给不同的参与者
XA_END 标志着这个过程的结束和从应用程序角度调用提交的时刻。
此时事务协调器在幕后进行控制。
PREPARE 消息被发送给每个参与者。
每个参与者都以 READY TO COMMIT 或 ABORT 响应消息被强制写入日志。
如果所有参与者都响应 COMMIT。向每个参与者发送提交调用。
这意味着如果发生崩溃并且在 Atomikos 的协调器端禁用了事务日志记录,他们很有可能一个参与者设法提交而另一个参与者没有设法提交。
基本上,如果你想保证一致的状态,com.atomikos.icatch.enable_logging 是强制性的。
我想了解如果我设置 com.atomikos.icatch.enable_logging=false
- 我是否理解正确,事务恢复与发生崩溃的情况相关,我们想要完全重新启动同一事务。
- 恢复是否在同一个分布式事务中进行?
- 我的应用程序可以容忍失败,因为失败总是可以通过新事务从头开始重新启动。这是否意味着在我的情况下可以设置
com.atomikos.icatch.enable_logging=false
- 如果不是所有分布式事务的参与者都已提交,是否会
com.atomikos.icatch.enable_logging=false
导致数据库状态不一致?
Update 在这个问题之后我被触发去学习更多关于我在这里描述的分布式事务的内部结构:
如果您想要分布式事务,那么您可能还想启用日志记录。禁用它实际上只是为了测试配置。
好吧,我花了一些时间才弄明白。答案是否定的,如果我们禁用 com.atomikos.icatch.enable_logging,我们将无法保证事务的一致性,并且我们最终可能会在一个数据库中提交某些内容而在另一个数据库中未提交。
在XA事务中我们有两个主要角色。交易协调者和交易参与者。涉及两个事务日志。一方面是协调者的事务日志,另一方面是参与者的事务日志。
发生的事情是,首先 XA 事务中的所有参与者都将自己注册到协调器。 XA_START 然后是记录阶段,其中所有 sql 语句都发送给不同的参与者 XA_END 标志着这个过程的结束和从应用程序角度调用提交的时刻。
此时事务协调器在幕后进行控制。 PREPARE 消息被发送给每个参与者。 每个参与者都以 READY TO COMMIT 或 ABORT 响应消息被强制写入日志。 如果所有参与者都响应 COMMIT。向每个参与者发送提交调用。
这意味着如果发生崩溃并且在 Atomikos 的协调器端禁用了事务日志记录,他们很有可能一个参与者设法提交而另一个参与者没有设法提交。
基本上,如果你想保证一致的状态,com.atomikos.icatch.enable_logging 是强制性的。