1
30
不同之处在于,一阶段提交通常用于一个系统或数据库,而两阶段提交用于跨多个DB或系统的分布式事务。让我给你举一个简单的例子 一阶段提交
这是用PL/SQL编写的经典原子事务(对于JavaEE世界,想象一下EJB方法也可以是事务性的),只有一个阶段执行所有操作,并进行提交或回滚。 两阶段提交
现在,您正在处理不同机器上的不同系统,但您希望成功写入所有系统,否则会失败(这就是为什么它是分布式事务)。所以这里来了 Two-phase commit protocol 基本上,事务管理器广播“准备提交”消息,然后等待来自每台机器的OK响应。如果每个人都说“没事”,那么一切都会被提交——如果没有,那么所有事务都会被回滚。 注意,如果您想在Java中使用XA事务,则需要一个支持XA的JDBC驱动程序(以及正确配置的XA数据源)。 |