0 0

关于两阶段提交事务的问题5

一直都对“事务”这个概念不是很明确,总觉得“两阶段提交的事务”在逻辑上并不能保证ACID中的“一致性”。
今天找资料,看到如下一段文字:

文章地址为:http://www.ibm.com/developerworks/cn/java/j-jtp0305.html
两阶段提交
典型事务有几个参与者 —— 应用程序、事务监视器(TPM)以及一个或多个资源管理器(RM)。
很多事务只涉及一个 RM —— 通常是数据库。在这种情况下,RM 通常执行提交或回滚事务所需的大部分工作。(几乎所有事务 RM 都有它们自己的内置的事务管理器,这个管理器可以处理本地事务 —— 只涉及该 RM 的事务)。但是,如果事务涉及两个 RM 或多个 RM —— 可能是两个单独的数据库,或者是一个数据库和一个 JMS 队列,或者是两个单独的 JMS 提供者 —— 我们想确保 “要么全有要么全无” 的语义不仅仅应用于这个 RM 中,而且还应用于事务中的所有 RM。在这种情况下,TPM 将组织一个两阶段提交。在两阶段提交中,TPM 首先向每个 RM 发送一个 “准备” 消息,询问它是否准备就绪以及是否能够提交事务;如果它收到来自所有 RM 的确认应答,则将事务在其自己的事务日志中标记为已提交,然后指示所有 RM 提交事务。如果某个 RM 失败,则重新启动时它将向 TPM 询问有关失败时未处理的所有事务的状态,并提交它们或者对它们执行回滚操作。


上面的最后一段话,我理解的意思是:事务处理监视器TPM询问DB1和DB2是否准备就绪,此时DB1和DB2都确认就绪,然后TPM就发出“提交”指令,并将TPM处的事务日志标记为“已提交”,然后DB1和DB2分别提交事务。此时如果DB2提交失败,那DB1如何能将已经commit的数据回滚掉呢?上文中的“如果某个 RM 失败,则重新启动时它将向 TPM 询问有关失败时未处理的所有事务的状态,并提交它们或者对它们执行回滚操作。”应该怎么理解呢?

在我们的EJB项目中,TPM是不是属于EJB容器的一部分?
在非EJB的J2EE应用中,TPM应该是什么?
TPM是否也记录“事务日志”?

不知道有没有达人都这个比较了解,指点一下,谢谢!
DAO 
2010年2月02日 14:55
目前还没有答案

相关推荐

    数据库一阶段提交和两阶段提交区别和说明

    一阶段提交(One-Phase Commit)和两阶段提交(Two-Phase Commit)是分布式事务中常见的两种提交协议,它们主要用于保证跨多个数据库节点的事务一致性。 1. **一阶段提交** 一阶段提交简单直接,应用程序向数据库...

    分布式事务之两阶段提交,转载自:银河里的星星

    两阶段提交(Two-Phase Commit, 2PC)是分布式事务中常见的一种协调协议,用于解决分布式环境下数据的一致性问题。这篇博客文章“分布式事务之两阶段提交”深入探讨了这一主题。 首先,我们要理解什么是分布式事务...

    XA两阶段提交及一阶段提交说明

    两阶段提交(Two-Phase Commit, 2PC)是一种经典的分布式事务提交协议,分为准备阶段和提交阶段。在准备阶段,事务协调者(事务管理器)向所有参与者(资源管理器)发送Prepare消息,参与者执行事务但不提交,处于...

    分布式事务两阶段提交协议的实现方法研究.pdf

    然而,传统两阶段提交协议在实践中遇到了一些问题,尤其是在站点故障或网络通信故障的情况下,可能导致事务处理阻塞。一旦发生阻塞,事务无法正确提交或撤销,这会影响系统资源的使用效率,并可能导致数据不一致。...

    事务和两阶段提交法1

    【事务和两阶段提交法1】深入解析 在数据库领域,事务是确保数据一致性、完整性和可靠性的核心概念。事务的ACID特性是其基石,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性...

    WebSphere MQ与Oracle 数据库的XA事务(两阶段提交)实现

    如果所有操作成功,协调器会在第二阶段提交事务;如果有任何部分失败,整个事务将被回滚,保证了数据的完整性和一致性。 在.NET中实现这些功能,我们需要使用.NET的IBM WebSphere MQ Client库,并且配置事务支持。...

    Greenplum两阶段事务流程分析

    Greenplum两阶段事务源码分析,本ppt主要讲述了整个greenplum的两阶段事务的状态切换、调用流程和日志类型。

    greenplum两阶段事务详解

    在Greenplum数据库中,事务是通过两阶段提交协议来实现的,即Prepare和Commit两个阶段。 在事务的开始阶段,客户端会向服务器发送BeginTransaction命令,以启动事务。服务器收到命令后,会创建一个事务块...

    两阶段提交

    两阶段提交(2PC)是一种分布式事务提交算法,在分布式环境下,所有节点进行事务提交,保持一致性的算法。它通过引入一个协调者(Coordinator)来统一掌控所有参与者(Participant)的操作结果,并指示它们是否要把...

    ByteJTA Transaction Manager旨在提供一个常规的基于XA两阶段提交的分布式事务管理器

    在两阶段提交过程中,事务管理器首先进入准备阶段,询问所有的资源管理器是否可以提交事务。如果所有参与的资源管理器都报告事务可以提交,事务管理器则进入第二阶段,指示资源管理器实际提交事务。如果有任何一个...

    oracle-mysql 两阶段提交例子(ejb3)

    ### Oracle与MySQL两阶段提交的例子(EJB3) #### 一、引言 本文将深入探讨在EJB3中实现跨Oracle和MySQL数据库的两阶段提交(Two-Phase Commit, 2PC)机制的具体实例。两阶段提交是一种分布式事务管理协议,用于确保...

    两阶段提交1

    两阶段提交(Two-Phase Commit, 2PC)是一种分布式系统中常见的用于保证事务一致性的协议,主要用于解决数据库集群中的事务处理问题。该协议确保所有参与者(如数据库节点)对事务的提交或回滚达成一致,以保持数据...

    MongoDB数据库两阶段提交实现事务的方法详解

    总之,MongoDB的两阶段提交机制是为了解决多文档操作的一致性问题,它在分布式环境中保证了事务的原子性和一致性,使得在非关系型数据库中也能实现类似关系型数据库的事务管理。然而,使用时需要注意其潜在的性能...

    分布式事务协议两阶段提交(2PC)与Paxos对比分析.pdf

    分布式事务协议两阶段提交(2PC)与Paxos对比分析

    基于Spring4.1.7+atomikos+mybaits 实现两阶段的分布式事务处理

    需要注意的是,虽然两阶段提交在多数情况下能够工作良好,但它也有其局限性,比如可能会出现阻塞问题(当参与者长时间未响应时),以及在大规模分布式系统中可能的性能瓶颈。因此,在设计系统时,应根据实际需求和...

    分布式数据库两阶段提交协议研究与改进.pdf

    两阶段提交协议(2PC)是一种经典的分布式事务协议,其设计目的是在多个数据库系统之间同步事务,以保证事务的原子性和一致性。2PC协议的核心在于它将事务提交过程分为两个阶段:预提交阶段和提交阶段。在预提交阶段...

    分布式系统一致性发展史(二)丨两阶段和三阶段提交1

    本篇将探讨两种早期用于解决一致性问题的协议:两阶段提交(Two-Phase Commit, 2PC)和三阶段提交(Three-Phase Commit, 3PC)。这两个协议在分布式事务处理中扮演了重要角色,但各自也有其局限性。 ### 两阶段提交...

    【java】分布式事务基于rabbitmq二阶段提交实现.zip

    二阶段提交协议(Two-phase commit protocol)是一种经典的分布式事务协议,它将事务的提交过程分为准备(Prepare)和提交(Commit)两个阶段。第一阶段,协调者询问参与者是否准备好提交事务;第二阶段,如果所有...

    基于非阻塞的分布式事务提交协议的实现.pdf

    标题《基于非阻塞的分布式事务提交协议的实现》和描述提到了关于分布式事务提交协议的最新研究和实现,具体内容中介绍了两阶段提交(2PC)和三阶段提交(3PC)协议的缺点,并提出了一种新的基于非阻塞的两阶段提交协议...

Global site tag (gtag.js) - Google Analytics