分布式事务和普通事务有什么区别

区别是:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。普通事务就是一般所说的数据库事务。事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。

分布式事务和普通事务有什么区别-Worktile社区

普通事务

普通事务就是一般所说的数据库事务。事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。当事务被提交给了DBMS(数据库管理系统),则DBMS(数据库管理系统)需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。

事务的ACID特性

原子性(A):所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一样。

一致性(C):事务的执行必须保证系统的一致性,就拿转账为例,A有500元,B有300元,如果在一个事务里A成功转给B 50元,那么不管并发多少,不管发生什么,只要事务执行成功了,那么最后A账户一定是450元,B账户一定是350元。

隔离性(I):所谓的隔离性就是说,事务与事务之间不会互相影响,一个事务的中间状态不会被其他事务感知。

持久性(D):所谓的持久性,就是说一单事务完成了,那么事务对数据所做的变更就完全保存在了数据库中,即使发生停电,系统宕机也是如此。

有了原子性为什么还要提一致性呢,原子性不能保证一致性吗?这就涉及到并发事务的概念。对于单个事务来说,原子性就能保证一致性,但是对于多个并发执行的事务,即使每个事务都是原子执行的,但它们同时执行的话,最终效果可能会不一致。

分布式事务

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。

为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。

阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免于难并且在失败之后可以重新对所有资源进行更新。

阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。 在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。

延伸阅读:

分布式事务的用途

分布式事务处理 (TP) 系统旨在协助在分布式环境中跨异类的事务识别资源的事务。在分布式 TP 系统的支持下,应用程序可以将不同的活动合并为一个事务性单元,这些活动包括从“消息队列”队列检索消息、将消息存储在 Microsoft SQL Server 数据库中、将所有现有的消息引用从 Oracle Server 数据库中移除,等等。因为分布式事务跨多个数据库资源,故强制 ACID 属性维护所有资源上的数据一致性是很重要的。

在 Transact-SQL 中启动的分布式事务的结构相对比较简单:

1. Transact-SQL脚本或应用程序连接执行启动分布式事务的 Transact-SQL 语句。

2. 执行该语句的 Microsoft® SQL Server™ 成为事务中的主控服务器。

3. 然后脚本或应用程序对链接的服务器执行分布式查询,或对远程服务器执行远程存储过程。

4. 当执行了分布式查询或远程过程调用后,主控服务器将自动调用 MS DTC 以便登记分布式事务中链接的服务器和远程服务器。

5. 当脚本或应用程序发出 COMMIT 或 ROLLBACK 语句时,主控 SQL Server 将调用 MS DTC 管理两阶段提交过程,或者通知链接的服务器和远程服务器回滚其事务。

文章标题:分布式事务和普通事务有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37888

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月13日 上午2:16
下一篇 2023年2月13日 上午2:19

相关推荐

  • 少儿编程都有什么

    少儿编程涉及多种领域,主要包括1、图形编程;2、游戏开发;3、机器人编程;4、网页设计;5、应用开发。特别是在图形编程领域,它通过直观的拖拽操作让儿童更容易理解编程的逻辑。以Scratch为代表的图形编程平台,让孩子们在构建故事、游戏或者动画的过程中,无形中掌握了事件驱动、循环、变量等编程基础概念,…

    2024年5月2日
    2800
  • 编程门槛很低吗为什么

    编程门槛相对较低,主要因为3个原因:1、广泛的资源和平台可供学习;2、多样化的编程语言和工具简化了开发过程;3、社区的支持与合作促进了技能的快速提升。 其中,广泛的资源和平台可供学习是特别值得强调的一点。如今,互联网上有无数的免费教程、在线课程、论坛和社区,无论是初学者还是有经验的开发者,都能找到适…

    2024年5月6日
    500
  • oa会签是什么意思

    多人协作完成文件审批过程称为OA会签。会签 典型在电子办公自动化(Office Automation, OA)系统中实行,允许多个相关人员或部门共同审阅并签署一个文件。在行政管理和企业运作中非常常见。在会签中,一个文件需经过所有指定签署人同意,方可进行下一步流程或生效。电子签章 为这一流程的关键环节…

    2024年1月11日
    88600
  • 编程猫用什么语言编程

    编程猫主要使用的语言有1、Scratch、2、Python。详细来说,Scratch是一门面向儿童的编程语言,通过它,孩子们可以通过拖拽代码块的方式学会逻辑思维和基础编程概念。编程猫利用Scratch的直观编程环境,鼓励孩子们探索、创造和学习。Scratch使得编程变得既简单又有趣,非常适合编程初学…

    2024年5月1日
    3100
  • 什么是无脑编程

    无脑编程通常指的是在不完全理解代码逻辑或原理的情况下编写程序,这种方式依赖于拷贝粘贴他人代码片段或过度使用代码生成器来完成编程任务。无脑编程的典型特点是缺乏深入分析问题和解决问题的深度思考,这经常导致代码质量差、难以维护和扩展,以及程序的不稳定性。展开来说,这种做法可能使得编程者错过了学习和提高编程…

    2024年5月2日
    4300
  • 少儿编程有什么好的学校

    少儿编程教育的重要性在当今社会日益凸显,多所学校致力于为孩子们提供优质的编程课程。值得关注的学校有1、Codeacademy、2、Scratch、3、Tynker、4、Codewizardshq。其中,Codeacademy因其互动式的学习平台和针对不同编程语言的全面课程受到了广泛好评。通过这样的平…

    2024年4月27日
    5300
  • 编程上什么学

    学习编程的关键包括5个要点:1、基础编程语言理解、2、数据结构与算法、3、项目实践、4、版本控制系统使用、5、持续学习与反思。 其中,基础编程语言理解尤为重要。它是编程学习的起点,对整个编程生涯有着长远的影响。选择一种主流的编程语言(如Python、Java或C++等),深入学习它的语法、特性及其生…

    2024年5月2日
    3200
  • 非标机械用什么插件编程

    非标机械编程通常需要依靠专业的CAM软件插件。这些插件允许工程师根据非标准机械部件的复杂形状和独特要求进行有效编程。其中,一些流行的CAM软件,如SolidWorks CAM、Fusion 360等,提供了强大的插件支持,使得编程过程更加灵活且高效。 举例来说,SolidWorks CAM提供了丰富…

    2024年4月27日
    4900
  • 车辆编程是什么

    车辆编程是现代汽车维护和优化的关键组成部分。它涉及到对车辆的电子控制单元(ECU)进行重编程或更新,以改进车辆性能、燃油效率、排放水平和驾驶体验。其中一项主要的编程活动是改变ECU的软件映射,这会影响发动机的运行参数,如点火时机和燃料注射量。这通常需要使用专业的诊断工具和专业知识,确保修改安全可靠,…

    2024年5月2日
    3100
  • i5和i7有什么区别

    i5和i7有什么区别有:1、超线程不同;2、缓存不同;3、时钟频率不同;4、功耗以及成本不同。就目前市面上的情况来看,i5处理器都是不具备超线程功能的,而i7处理器一般都具备超线程功能。

    2023年1月31日
    39.6K00

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部