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

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

分布式事务和普通事务有什么区别-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、编写测试报告。其中,分析测试是需求测试人员在制订测试计划之前需要先对软件需求进行分析,从而明确测试对象及测试工作的范围和测试重点。 1、分析测试需求 测试人员在制订测试计划之前需要先对软件需求进行分析,以便对要开…

    2023年1月4日
    53500
  • 开发一款软件,需要准备的东西有哪些

    开发软件要准备以下工具:一、编辑器;二、集成开发环境(IDE);三、版本控制工具;四、单元测试工具;五、集成测试工具;六、编译工具;七、集成开发及部署工具。编写代码是软件开发的核心工作。一个好的编辑器可以提高开发效率,减少手动输入代码的时间。 一、编辑器 编写代码是软件开发的核心工作。一个好的编辑器…

    2023年5月23日
    18500
  • plc的接口模块有哪些

    plc的接口模块有:1、机架或机箱;2、电源(PS)模块;3、中央处理器;4、接口模块(IM);5、信号模块(SM);6、功能模块(FM);7、通信处理器(CP)。机架或机箱是模块化或机架式 PLC 系统中最重要的部分。通常,机架或机箱充当 PLC 系统的骨干。 1、机架或机箱 机架或机箱是模块化或…

    2023年1月9日
    24500
  • c  面向对象和java面向对象的区别

    区别有: 1、应用不同;2、起源不同;3、开发方法不同;4、编译方式和运行环境不同。C语言多用于计算机底层系统编程,如Windows操作系统、Linux操作系统等。Java语言多用于企业应用开发,特别是互联网应用,因为Java有易学、安全性,可移植、跨平台等特点。 1、应用不同 C 语言是一门工程实…

    2023年2月13日
    12700
  • B/S和C/S的区别是什么

    B/S和C/S的区别是:1、建立基础不同;2、硬件环境不同;3、对安全要求不同;4、软件重用不同;5、系统维护不同;6、系统性能不同;7、用户接口不同。C/S是建立在局域网的基础上的;而B/S是建立在广域网的基础上的。 1、建立基础不同 C/S是建立在局域网的基础上的;而B/S是建立在广域网的基础上…

    2023年2月20日
    12100
  • 为什么代码质量很重要

    为什么代码质量很重要:1、增强代码可读性;2、提高程序可持续性水平;3、提高可转移性;4、降低与程序或软件相关的成本;5、提高代码安全性。代码可读性很重要,这可以提高其他开发人员对代码的理解率。易于阅读的代码也易于改进。 一、什么是代码质量 代码质量是指软件代码的编写和可维护程度。它包括可读性、效率…

    2023年6月3日
    9300
  • 在线文档编辑有哪些

    在线文档编辑有:一、石墨文档;二、简道云;三、Coggle;四、金山文档;五、飞书。石墨文档是一款文档编辑软件,分享的文档支持多人实时协作。页面设计清清爽爽,没有太多花里胡哨的设计。 一、石墨文档 石墨文档是一款文档编辑软件,分享的文档支持多人实时协作。页面设计我也比较喜欢,清清爽爽,没有太多花里胡…

    2023年4月30日
    14600
  • 网站服务器崩溃是什么原因

    网站服务器崩溃可能由多种原因引起,其中包括:1、服务器硬件问题;2、服务器软件问题;3、网络问题;4、恶意攻击;5、服务器过载。服务器硬件问题是导致服务器崩溃的常见原因。这些问题可能包括硬盘故障、内存故障、电源问题等。 1、服务器硬件问题 服务器硬件问题是导致服务器崩溃的常见原因。这些问题可能包括硬…

    2023年7月16日
    8000
  • 国内外有哪些epc项目管理系统

    国内外的epc项目管理系统有:1、PingCode;2、Worktile;3、Asana;4、Smartsheet;5、Teambition;6、Tuleap;7、Trello;8、Jira;9、Microsoft Project。PingCode 是一款覆盖研发全生命周期的项目管理系统。 一、Pi…

    2023年4月21日
    11500
  • 为什么软件测试需要使用到Linux

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。和咱们经常接触的Windows同属于操作系统。Linux作为使用得越来越多的搭配服务器的系统,它成为了不管是测试还是运维还是开发,都必须会的内容。 一、Linux简…

    2023年6月7日
    14200

发表回复

登录后才能评论
联系我们
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部