`
huangyongxing310
  • 浏览: 498905 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

一阶段提交、二阶段提交、三阶段提交

阅读更多
原文参考:http://blog.csdn.net/bluishglc/article/details/7612811



数据库要求:ACID
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。


原子性:所有的改变要么都做了,要么都没做。
一致性:数据保持一致性状态。
隔离性:其它用户看不到部分改变。
持久性:一旦向用户确认了事务,数据就处于安全的状态(通常存在硬盘上)。

一阶段提交
一阶段提交非常直白,就是从应用程序向数据库发出提交请求到数据库完成提交或回滚之后将结果返回给应用程序的过程。一阶段提交不需要“协调者”角色,各结点之间不存在协调操作,因此其事务执行时间比两阶段提交要短,但是提交的“危险期”是每一个事务的实际提交时间,相比于两阶段提交,一阶段提交出现在“不一致”的概率就变大了。但是我们必须注意到:只有当基础设施出现问题的时候(如网络中断,当机等),一阶段提交才可能会出现“不一致”的情况,相比它的性能优势,很多团队都会选择这一方案。

可以通过事务补偿机制使数据达到最终一致性(就是数据已经记录在部分节点上了,在后面的一个时间段后进行数据同步更新到所有的节点上,使所有的节点上的数据是一致的)。


两阶段提交
两阶段提交主要保证了分布式事务的原子性:即所有结点要么全做要么全不做
所谓的两个阶段是指:
第一阶段:准备阶段。
第二阶段:提交阶段。

1.准备阶段:事务协调者(事务管理器)给每个参与者(资源管理器)发送Prepare消息,每个参与者要么直接返回失败(如权限验证失败),要么在本地执行事务,写本地的redo和undo日志,但不提交,到达一种“万事俱备,只欠东风”的状态。

2.提交阶段:如果协调者收到了参与者的失败消息或者超时,直接给每个参与者发送回滚(Rollback)消息;否则,发送提交(Commit)消息;参与者根据协调者的指令执行提交或者回滚操作,释放所有事务处理过程中使用的锁资源。(注意:必须在最后阶段释放锁资源)


三阶段提交
就是在两阶段提交中间再放一个prepare_commit的过程保证各个节点的数据的一致性。
分享到:
评论

相关推荐

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

    【一阶段提交】 一阶段提交(One-Phase ...为了克服这些局限,后续出现了更复杂的分布式事务协议,如三阶段提交(Three-Phase Commit, 3PC)、柔性事务等。这些协议在一定程度上平衡了事务的一致性和系统的可用性。

    两阶段提交

    两阶段提交(2PC)概述 两阶段提交(2PC)是一种分布式事务提交算法,在分布式环境下,所有节点进行事务提交...* 分布式事务的其他解决方案:除了2PC 算法外,还有其他解决方案,例如三阶段提交(3PC)和分布式锁等。

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

    在阅读《CSE550BHG-Ch7.pdf》这样的文件时,你可能会了解到更多关于2PC的细节,包括如何处理各种异常情况、优化策略以及替代方案,如三阶段提交(3PC)、Paxos、Raft等分布式一致性算法。 总的来说,了解和掌握两...

    mysql第三阶段

    MySQL是世界上最流行的关系型数据库管理系统之一,其第三阶段的学习通常涉及深入理解数据类型、表的操作以及数据完整性约束。在这个阶段,我们将重点讨论如何创建数据表、应用约束、插入和查找记录,以及各种类型的...

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

    【分布式系统一致性发展史(二)】:两阶段与三阶段提交 在分布式系统中,一致性是确保系统在面临各种网络、硬件故障时仍然能够保持数据一致性的关键特性。本篇将探讨两种早期用于解决一致性问题的协议:两阶段提交...

    两阶段提交1

    两阶段提交(Two-Phase Commit, 2PC)是一种...为了解决这些问题,后续出现了如三阶段提交(Three-Phase Commit)、Paxos、Raft等更复杂的分布式一致性算法。这些算法在保证一致性的同时,提高了系统的可用性和性能。

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

    #### 三、两阶段提交的基本概念 两阶段提交协议包括两个主要阶段: 1. **准备阶段**(Prepare Phase):在这个阶段,事务协调者向所有参与事务的资源管理器发送“准备”命令。每个资源管理器执行事务操作,并记录...

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

    三阶段提交协议(3PC)是在2PC协议的基础上增加了一个“预备提交”阶段。这一阶段的目的是让参与者在正式提交前进行预备,确认是否准备好提交,以此减少协调者崩溃后的不确定状态。即使协调者在预备提交阶段崩溃,...

    中国石油大学(北京)2024年春大学英语(三)第一阶段在线作业

    【标题】:“中国石油大学(北京)2024年春大学英语(三)第一阶段在线作业”这一标题表明这是一份学术性质的作业,针对的是中国石油大学(北京)2024年春季学期的学生,课程是大学英语的第三阶段,而作业形式则是...

    分布式系统一致性(ACID、CAP、BASE、二段提交、三段提交、TCC、幂等性)原理详解1

    在本文中,我们将深入探讨几种重要的理论和实践方法,包括ACID特性、CAP定理、BASE原则,以及几种常见的分布式事务处理协议:二段提交、三段提交和TCC(Try-Confirm-Cancel)模式,同时也会提到幂等性这一关键概念。...

    MySQL事物实现原理之组提交(group commit).pdf

    二阶段提交是一种基于两阶段协议的分布式事务协调机制,其中binlog担当协调者角色,确保了即使数据库系统崩溃,事务也能够正确地提交或回滚。 在引入二阶段提交后,binlog的刷新也成为性能瓶颈,原先的Redo Log组...

    Struts之Token解决表单那重复提交

    在处理用户交互时,尤其是表单提交,一个常见的问题是防止表单的重复提交。这可能导致数据的不一致性和其他问题。本文将深入探讨如何在Struts框架中利用Token机制来解决这个问题。 一、表单重复提交问题 表单重复...

    mysql索引,分布式事务,三阶段协议,b+树

    为了缓解2PC的问题,提出了三阶段提交协议,分为预准备、预备和提交三个阶段。3PC增加了确认阶段,降低了阻塞概率,但仍然存在网络延迟和单点故障的风险。 四、Java与MySQL交互 Java是常用的数据库操作语言,通过...

    jQuery三步骤表单内容提交特效.zip

    "jQuery三步骤表单内容提交特效"就是一个典型的例子,它将表单提交过程分为三个阶段,通过视觉提示提升用户的使用体验。本文将深入探讨这一特效的实现原理和应用技巧。 一、jQuery基础与表单操作 jQuery库简化了...

    matlab开发-第一、第二和第三阶段报告

    本项目聚焦于"第一、第二和第三阶段报告",这可能指的是项目的初期规划、中期实施以及后期评估。报告中提到的"二阶和三阶ODE的相图"是数学建模中的一个重要部分,特别是对于物理、工程和生物系统等领域,这些系统的...

    教练技术三阶段讲义.doc

    教练技术三阶段是一种个人发展和团队建设的训练课程,旨在帮助参与者提升自我认知,增强领导力,以及提高团队协作能力。整个过程分为三个主要阶段,每个阶段都有特定的目标和活动,以逐步深化学习者的体验。 第一...

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

    三阶段提交协议(3PC)是对2PC协议的一种改进,增加了预提交阶段以解决阻塞问题,即在提交或回滚之前,先进行一轮预提交,确保各个参与者已经准备好,并且不会有阻塞发生。尽管3PC减少了阻塞的可能性,但实现起来更为...

    SVN提交代码时格式

    SVN中的钩子是一系列可执行脚本,它们在提交代码的不同阶段被调用,以执行特定的任务。主要的钩子类型包括: - **pre-commit**:在提交之前被调用,用于验证即将提交的数据。 - **post-commit**:在提交完成后被...

    Web应用中避免Form重复提交的三种方案

    - **提交阶段**: 用户提交表单时,服务器会检查表单中包含的令牌与会话中存储的令牌是否一致。 - **响应阶段**: 如果令牌一致,则处理表单数据;如果不一致,则视为重复提交,通常返回错误提示。 - **更新令牌**: 在...

    javaWeb作业提交系统

    【JavaWeb作业提交系统】是一个基于Java技术构建的在线作业提交平台,主要用于教育环境中方便教师布置、学生提交以及批改作业。这个系统采用Tomcat 9.0作为应用服务器,展示了JavaWeb开发中的核心概念和技术。 一、...

Global site tag (gtag.js) - Google Analytics