啥是事务?
有一组操作组成的可靠的独立的工作单元。
ACID是咋回事?
A(原子性)事务的原子操作单元,对数据的修改,要么全部执行,要么全部不执行;
C(一致性)在事务开始和完成时,数据必须保持一致状态,相关的数据规则必须应用于事务的修改,以保证数据的完整性,事务结束时,所有的内部数据结构必须正确;
I(隔离性)保证事务不受外部并发操作的独立环境执行;
D(持久性)事务完成之后,对于数据的修改是永久的,即使系统出现故障也能够保持;
BASE是咋回事?
BA: Basic Availability 基本业务可用性;
S: Soft state 柔性状态;
E: Eventual consistency 最终一致性;
CAP是咋回事?
C(一致性)一致性是指数据的原子性,在经典的数据库中通过事务来保障,事务完成时,无论成功或回滚,数据都会处于一致的状态,在分布式环境下,一致性是指多个节点数据是否一致;
A(可用性)服务一直保持可用的状态,当用户发出一个请求,服务能在一定的时间内返回结果;
P(分区容忍性)在分布式应用中,可能因为一些分布式的原因导致系统无法运转,好的分区容忍性,使应用虽然是一个分布式系统,但是好像一个可以正常运转的整体;
对于任何共享系统,最多只能拥有其中两个特性。任两者的组合都有适用的场景,真实系统应该是ACID和BASE的混合体。
二阶段提交咋回事?
1、第一阶段(提交请求阶段)
协调者节点向所有参与者节点询问是否可以执行提交操作,并开始等待各参与者节点的响应。
参与者节点执行询问发起为止的所有事务操作,并将Undo信息和Redo信息写入日志。
各参与者节点响应协调者节点发起的询问。如果参与者节点的事务操作实际执行成功,则它返回一个"同意"消息;如果参与者节点的事务操作实际执行失败,则它返回一个"中止"消息。有时候,第一阶段也被称作投票阶段,即各参与者投票是否要继续接下来的提交操作。
2、第二阶段(提交执行阶段)
2.1成功
当协调者节点从所有参与者节点获得的相应消息都为"同意"时:
协调者节点向所有参与者节点发出"正式提交"的请求。
参与者节点正式完成操作,并释放在整个事务期间内占用的资源。
参与者节点向协调者节点发送"完了"消息。
协调者节点受到所有参与者节点反馈的"完了"消息后,完成事务。
2.2失败
如果任一参与者节点在第一阶段返回的响应消息为"中止",或者 协调者节点在第一阶段的询问超时之前无法获取所有参与者节点的响应消息时:
协调者节点向所有参与者节点发出"回滚操作"的请求。
参与者节点利用之前写入的Undo信息执行回滚,并释放在整个事务期间内占用的资源。
参与者节点向协调者节点发送"回滚完了"消息。
协调者节点受到所有参与者节点反馈的"回滚完了"消息后,取消事务。
有时候,第二阶段也被称作完成阶段,因为无论结果怎样,协调者都必须在此阶段结束当前事务。
3、二阶段提交的缺点
二阶段提交算法的最大缺点就在于 它的执行过程中间,节点都处于阻塞状态。即节点之间在等待对方的相应消息时,它将什么也做不了。特别是,当一个节点在已经占有了某项资源的情况下,为了等待其他节点的响应消息而陷入阻塞状态时,当第三个节点尝试访问该节点占有的资源时,这个节点也将连带陷入阻塞状态。
另外,协调者节点指示参与者节点进行提交等操作时,如有参与者节点出现了崩溃等情况而导致协调者始终无法获取所有参与者的响应信息,这是协调者将只能依赖协调者自身的超时机制来生效。但往往超时机制生效时,协调者都会指示参与者进行回滚操作。这样的策略显得比较保守。
分布式事务的XA协议?
XA协议是由X/Open组织提出的分布式事务处理的规范,主要定义了事务管理器和局部资源管理器之间的界面,目前Oracle、db2等各大数据库厂商都提供对XA的支持,XA协议采用二阶段提交来管理分布式事务。
本地事务是咋回事?
事务有资源管理器(例如DBMS)本地管理。
优点是支持ACID特性,高效,可靠,应用系统编程简单。
缺点是不支持分布式环境,隔离的最小单位有资源管理器决定,例如数据库的一行记录。
spring的事务模板(模板方法回调)
最佳实践
1、基于消息的最终一致性
消息系统提供两个方面的支持,一个是发送消息提供事务支持,另外一个就是发送成功的消息保证投递成功,这样就可以借助消息系统来实现系统的最终一致性
2、系统幂等操作
重复调用多次产生的业务结果与调用一次产生的业务结果相同。
实现方式一个是业务操作本身实现幂等,二是系统缓存请求与处理结果,检测到重复请求之后,自动返回之前的结果。
3、事务补偿机制
相关推荐
在lr12中 几个慨念容易混淆 文档介绍了这些概念以及用来干什么
事务是一个逻辑工作单元,SQL Server 2005 提供了几种自动的可以通过编程来完成的机制,包括事务日志、SQL事务控制语句,以及事务处理运行过程中通过锁定保证数据完整性的机制。当用户对数据库并发访问时,为了确保...
而对于MySQL中的锁,我们将会介绍基础锁和高级锁的分类、锁的应用场景、锁的竞争和冲突问题、锁的常见应用案例、以及针对锁的调优方法等几个重要话题。我们会具体探讨到排它锁和共享锁的定义、意义和实现;介绍到锁...
此资源内容分别详细讲解了分布式事务的几种常见场景和解决方案:基础概念;分布式事务基础理论;分布式事务解决方案之两阶段提交;分布式事务解决方案之TCC;分布式事务解决方案之可靠消息最终一致性;分布式事务...
- 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行; - 持久性(Durability):一旦事务提交,其对数据库的修改将永久保存。 事务的使用可以确保数据的完整性和一致性,避免...
相关知识如下: 1、 视图 2、 范式 3、 事务 4、 变量与存储函数 5、 存储过程 6、 触发器 7、 权限的分配 8、 数据类型的使用 9、联合查询
程序和事务是两个不同的概念。一般而言:一段程序中可能包含多个事务。 事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性也简称ACID性。 1)...
本文来自于CSDN,文章详细介绍了梳理分布式事务的基本概念和理论基础,然后介绍几种目前常用的分布式事务解决方案等。 事务由一组操作构成,我们希望这组操作能够全部正确执行,如果这一组操作中的任意一个步骤发生...
详细讲解SIP协议原理基本概念,几个基本概念:UAC、UAS、对话、事务、URI、头域,对话:SIP消息中哪些内容决定一个对话,事务:请求是否一定有响应?一个请求是否只能有一个响应?URI:常见的URI有哪几种
一、Mysql事务概念 MySQL 事务主要用于处理操作量大,复杂度高的数据。由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。在 MySQL 中只有使用了 Innodb 数据库引擎的...
文档的内容包括以下几个方面: 1. 背景介绍:介绍了MySQL的发展历程、应用场景和重要性。 2. 数据库基础知识介绍:介绍了MySQL的基本概念、数据类型、变量、索引、事务、提交和回滚等知识。 3. MySQL的安装:介绍了...
MySQL免试题目主要涉及以下几个方面: MySQL基础概念:包括数据库、表、记录、字段等基本概念,以及数据类型、约束等基本属性的理解。 SQL语句:熟练掌握SQL语言是MySQL面试的重要内容,包括查询语句、插入语句、...
系统运行安全 系统运行安全包括如下几个方面: (1)操作系统的安全,如数据文件是否保护等。 (2)法律、政策的保护,如用户是否有合法权利,政策是否允许等。 (3)物理控制安全,如机房加锁等。 (4)硬件运行的安全。 (5...
由于数据仓库是一个独立的数据环境,它需要通过抽取过程将数据从联机事务处理系统、外部数据源、脱机的数据存储介质中导入到数据仓库。数据抽取在技术上主要涉及互连、复制、增量、转换、调度和监控等方面。数据仓库...
几个相关的概念 广州市品高软件开发有限公司 5 BIBusiness Intelligence,即商业智能,一类由数据仓库(或数据集市)、查询报表、数据分析、数据挖掘、数据备份和恢复等部分组成的、以帮助企业决策为目的技术及其...
备份数据库时,有几个备份选项需要了解一下,覆盖介质、事务日志等。谈到覆盖介质时,必须先对这个概念有所了解,不然无从谈起。 ● 介质集 (media set):备份介质(磁带或磁盘文件)的有序集合,使用固定类型和数量...
有时,我可能用一个小时就能撰写几千字的文章,但为了一幅能准确表达意思的图,却要花费好几个小时。 需要说明的是,所撰写的内容主要基于我个人的经验总结,并以实战为导向,但内容不会与任何特定公司的支付系统...
分布式多层数据库开发_关于建立COM 时的几个选项现在说明一下Threading Model 进程内组件的注册使用regsvr32 xxx.dll,进程外组件的注册使用xxx.exe register 创建进程内COM组件 创建进程外COM组件 事务 ...