`
huangyongxing310
  • 浏览: 483695 次
  • 性别: 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的过程保证各个节点的数据的一致性。
分享到:
评论

相关推荐

    两阶段提交

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

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

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

    mysql第三阶段

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

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

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

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

    另外,三阶段提交协议在决策阶段增加了预备提交阶段,使得参与者在正式提交前先进行预备提交,这样即使协调者崩溃,参与者也能根据预备提交状态做出正确的决策,避免阻塞。 总的来说,这篇论文深入剖析了分布式...

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

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

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

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

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

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

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

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

    javaWeb作业提交系统

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

    2018国赛第一阶段三等奖秘籍.docx

    本文档是2018年全国职业院校技能大赛中职组“网络空间安全”赛项第一阶段三等奖的秘籍,主要涵盖两个核心任务:ARP扫描渗透测试和漏洞扫描与利用。这些任务旨在考核参赛者的网络安全知识和实战技能,特别是在Windows...

    03测试与验收阶段02项目经理提交XXX-源代码共75页

    在IT行业中,测试与验收阶段是软件开发流程中的关键环节,这一阶段的目的是确保软件产品满足预定的功能需求、性能标准以及质量要求。项目经理在此阶段的角色至关重要,他们负责协调团队、管理进度、确保文档完整,并...

    2023-04-06-项目笔记 - 第一百六十三阶段 - 4.4.2.161全局变量的作用域-161 -2024.06.13

    2023-04-06-项目笔记-第一百六十2023-04-06-项目笔记-第一百六十三阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1...

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

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

    vue蛙课网三阶段代码以及文档.zip

    "vue蛙课网三阶段代码以及文档.zip" 这个压缩包很可能包含了一整套关于Vue.js学习资源,特别是蛙课网课程的第三阶段内容。蛙课网是一个提供在线编程教育的平台,它通常会为学员提供逐步的教程、实战项目和相关的学习...

    jquery_form_js 表单提交自定义源码

    在Web开发中,表单提交是不可或缺的一部分,而jQuery Form插件为开发者提供了一种简单、高效的处理表单提交方式。本文将深入探讨"jquery_form_js"项目,通过分析其核心文件`jquery.form.js`的源码,来揭示jQuery ...

    2023-04-06-项目笔记 - 第一百二十三阶段 - 4.4.2.121全局变量的作用域-121 -2024.05.04

    2023-04-06-项目笔记-第一百二十三阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的...

    java面试题_第二阶段.pdf

    Servlet生命周期包括初始化(init)、服务(service)、销毁(destroy)三个阶段。 - **HTTP协议**:HTTP是基于TCP/IP的应用层协议,规定了客户端(如浏览器)与服务器之间通信的方式。它基于请求-响应模型,无状态...

    Go语言-知识点第二阶段第三周.rar

    5. **事务处理**:`db.Begin()`开启一个事务,`Commit()`提交事务,`Rollback()`回滚事务。事务中的操作应包裹在`defer`中,以确保在出现错误时能正确回滚。 6. **扫描结果**:使用`Scan()`方法将查询结果赋值给...

Global site tag (gtag.js) - Google Analytics