为了完成对数据的操作,企业应用经常要求并发访问在多个构件之间共享的数据。这些应用在下列条件下应该维护数据的完整性(由应用的商务规则来定义):

分布式访问一个单独的数据资源,以及从一个单独的应用构件访问分布式资源。

在这种情况,可能要求在(分布式)资源上的一组操作被当作一个工作单元(unit)。在一个工作单元中, 操作的所有部分一起成功或失败并恢复。在下面的情况下这个问题更加复杂:

通过一组分布式的、访问多个资源的数据的构件实现一个工作单元,和/或部分操作是被顺序执行的或在要求协调和/或同步的并行线程中。

在所有情况下, 都要求应用维护一个工作单元的成功或失败。在失败的情况下,所有资源要把数据状态返回到以前的状态

(比如说,工作单元开始前的状态)。

事务的概念和和事务管理器(或者一个事务处理服务)在一个工作单元中的维护数据完整性,这就简化了这样的企业级别分布式应用的构造。

一个事务是有下列属性的一个工作单元:

原子性(ATOMICITY):

一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。

一致性(CONSISTENCY):

一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致-状态转换到另一个一致状态。举个例子,在关系数据库的情况下,

一个一致的事务将保护定义在数据上的所有完整性约束。

隔离性(ISOLATION):

在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事:

在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。

两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。

持久性(DURABILITY):

一个被完成的事务的效果应该是持久的。

****************************************************************************************************************************************************************************************************************************

****************************************************************************************************************************************************************************************************************************

【考点】

数据库事务基础知识。

【出现频率】

★★★☆☆

【解答】

事务提供了一种机制,可用来将一系列数据库更改归入一个逻辑操作。更改数据库后,所做的更改可以作为一个单元进行提交或取消。事务可确保遵循原子性、一致性、隔离性和持续性(ACID)这几种属性,以使数据能够正确地提交到数据库中。

使用事务机制的好处非常明显,例如银行转账之类的交易操作中,事务有着重要的作用。事务的成功取决于事务单元帐户相互依赖的操作行为是否能全部执行成功,只要有一个操作行为失败,整个事务将失败。例如:客户A和客户B的银行账户金额都是10000元人民币,客户A需要把自己帐户中的5000元人民币转到客户B的账户上。这个过程看似简单,实际上涉及了一系列的数据库操作,可以简单地视为两步基本操作,即从客户A帐户的金额中扣除5000元人民币,以及将客户B帐户中金额添加5000元人民币。假设第1步数据库操作成功,而第二步失败的话,将导致整个操作失败,并且客户A帐户金额将被扣除5000元人民币。事务机制可以避免此类情况,以保证整个操作的完成,如果某步操作出错,之前所作的数据库操作将全部失效。

【分析】

事务是单个的工作单元。如果某个事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除。一个逻辑工作单元必须有ACID属性,只有这样才能成为一个事务。ACID属性有以下4个属性。

1.原子性

事务必须是原子工作单元。对于其数据修改,要么全都执行,要么全都不执行。

2.一致性

事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都必须是正确的。

3.隔离性

由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务识别数据时数据所处的状态,或者是另一个并发事务修改它之前的状态,或者是第二个事务修改它之后的状态,事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

4.持久性

事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

事务有以下3种运行模式。

q      自动提交事务:每条单独的语句都是一个事务。

q      显式事务:每个事务均以BEGIN TRANSACTION语句显式开始,以COMMIT或ROLLBACK语句显式结束。

q      隐性事务:在上个事务完成时新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK语句显式完成。

说明:还有一种批处理级事务模式,该模式仅应用于多活动结果集(MARS),在MARS会话中启动的Transact-SQL显式或隐式事务变为批处理级事务。当批处理完成时没有提交或回滚的批处理级事务自动由SQL Server进行回滚。

mysql事务的好处_什么是事务(transaction)?它有什么好处相关推荐

  1. mysql数据库事务传播特性_什么是事务的传播特性?

    我们都知道事务的概念,那么事务的传播特性是什么呢?(此处着重介绍传播特性的概念,关于传播特性的相关配置就不介绍了,可以查看spring的官方文档) 在我们用SSH开发项目的时候,我们一般都是将事务设置 ...

  2. 事务嵌套问题_注意Spring事务这一点,避免出现大事务

    背景 本篇文章主要分享压测的(高并发)时候发现的一些问题.之前的两篇文章已经讲述了在高并发的情况下,消息队列和数据库连接池的一些总结和优化,有兴趣的可以在我的公众号中去翻阅.废话不多说,进入正题. 事 ...

  3. 使用angular的好处_在项目中使用Angular的最大好处

    使用angular的好处 by Irina Sidorenko 伊琳娜·西多连科(Irina Sidorenko) 在项目中使用Angular的最大好处 (The top benefits of us ...

  4. 的好处_女性做下蹲运动有什么好处 原来有这些好处

    我们在小时候如果犯了错,那么很可能会被老师或者家长罚着做下蹲.因为下蹲非常的累,其实下蹲累的原因就是它的锻炼效果非常的明显.那么你知道女人做下蹲运动的好处是什么呢?下面我们一起去健身知识那里看看吧! ...

  5. 大数据对人们的好处_大数据给人们生活带来哪些好处?

    原标题:大数据给人们生活带来哪些好处? 现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物. 阿里巴巴创办人马云来台演讲中就 ...

  6. python人工智能课程对孩子的好处_人工智能课堂给中学生带来了什么好处

    当人工智能课走进中学课堂,对中学课堂带来的影响有哪些,中学生做好应对人工智能课堂的准备了吗? 广东最顶尖的中学正在为应对人工智能时代的来临做好准备.昨日,记者从华南师范大学附属中学了解到,该校面向奥班 ...

  7. java中封装的好处_【Java基础】java封装的好处

    在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机 ...

  8. mysql的原理图解_图文并茂讲解Mysql事务实现原理

    开篇 相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等.今天想跟大家一起研究下事务 ...

  9. mysql 事务补偿_TCC补偿性策略_彻底学习数据库事务 seata分布式事务 共享 排它锁 死锁 索引 Spring事务 隔离级别等_MySQL视频-51CTO学院...

    课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程.对于难以理解的知识点,全部用画图+实战的方式讲解. 彻底明白事务的四个特性:原子性.一致性.隔离性.持久性,用 ...

最新文章

  1. .Net 获取日期所属于一年中的第几周
  2. 由于权限引起的Tomcat中项目某些页面访问不了
  3. 网络工程师第五站-有线、无线同网段混合组网(多FAT案例)
  4. Gartner的预言:通向混合IT之旅
  5. orm2 中文文档 3.2 模型验证器
  6. Struts2面试题
  7. STM32串口通信简介
  8. snort安装使用教程
  9. python求小于n的最大素数_找出小于n的最大素数,其中n =〜10 ^ 230 - python
  10. 二十二.基于国民MCU 的COMP模块的比较案例
  11. 计算机基础知识在哪里学,学习电脑基础知识先从哪方面入手?
  12. Mac电脑如何调整鼠标光标大小?
  13. 【ZZULIOJ】1055: 兔子繁殖问题
  14. 《小白兔到大黑牛》第十三篇maven中Hadoop中类的练习
  15. 互联网日报 | 蔚来汽车股价年内涨幅近十倍;小米成立可穿戴部;恒大物业拟12月2日港交所上市...
  16. C4D基础学习(二)-移动与捕捉工具
  17. mybatis-plus中and和or的使用
  18. python星星排列_python中怎么实现星星排列
  19. Node+express+mongoose前端实现简单crud接口
  20. python 文本处理 保留中英文和标点符号_python-文本处理和正则表达式

热门文章

  1. 2020年春季入学学员计算机应用基础本,2020年春季考试《计算机应用基础》在线考核试题.doc(9页)-原创力文档...
  2. 银行招聘考试题库计算机,2019银行招聘计算机试题(一)答案
  3. 手机访问www如何自动跳转到m js代码实现
  4. 经过七年演进,Serverless流行起来了吗?
  5. AWS 与 Elastic 矛盾再升级!
  6. Node.js 开发者的 Rust 入门指南
  7. 手撕前端面试之经典排序算法
  8. 欧洲最大云服务公司 OVH 法国机房着火:1个数据中心被完全烧毁、部分客户数据完全丢失且无法恢复
  9. Windows 的开发好痛苦
  10. AWS 聘用 Rust 编译器联合创始人,大企为何都爱 Rust?