何为“ 事务管理 ”?
“事务”是一个逻辑单元,其中包含一系列的操作,事务遵循4个基本特性(ACID):
Atomic(原子性,此处指的是事务中的各个操作不可分割) 事务中包含的操作被看作是一个逻辑单元,这个单元中的操作要么全部成功,要么就全部失败;
Consistency(一致性)
意味着:只有合法的数据可以被写入数据库,如果数据有任何不符合要求的,则事务应该将其会滚到最初状态;
Isolation(隔离性) 允许多个用户对同一数据的并发访问,而不破坏数据的正确性和完整性,同时,并行事务的修改必须与其他并行事务的修改相互独立;可以这样理解,一个事务的数据要么是另外一个事务修改这些事务之前的状态,要么是第二个事务已经修改完成的数据,但是这个事务不能够看到其他事务正在修改的数据;
Durability(持久性)
事务结束后,事务必须要得到固化(将其存储到数据库里,或保存到某硬件设备里);
何为“ 数据库事务管理隔离等级 ”?
事务隔离指的是:数据库(或其他事务系统)通过某种机制,在并行的多个事务之间进行分隔,使每个事务在其执行过程中保持独立;
Hibernate中的事务隔离依赖于底层数据库提供的事务隔离机制,因此对数据库事务隔离机制的理解在基于Hibernate实现的持久层中同样适用;
数据操作过程中可能出现的3种不确定情况:
脏读取(Dirty Reads) :一个事务读取了另一个事务为提交的数据;
不可重复读取(Non-repeatable Reads) :一个事务再次读取之前曾读取过的数据时,发现该数据已经被另一个已提交的事务修改;
虚读(Phantom Reads) :一个事务重新执行一个查询,返回一套符合查询条件的记录,但这些记录中包含了因为其他最近提交的事务而产生的新记录;
为了避免上面3中情况发生,标准的SQL规范中,定义了4个事务隔离等级;
Read Uncommitted:
最低等级的事务隔离,仅仅保证了读取数据中不会读到非法数据,这种等级下,上述的不确定情况均可能发生;(很容易出现脏读取);
Read Commited:
此级别的事务隔离保证一个事务不会读到另一个并行事务已修改但未提交的数据,此等级已经避免了脏读取的情况;(当一个事务处于在此隔离等级中,一个Select查询只能看到查询开始之前提交的数据,永远看不到为提交的数据,或者运行时提交的数据);
Repeatable Read:
此级别的事务隔离避免了“脏读取”和“不可重复读取”现象的出现,意味着:一个事务不可能更新已经由另一个事务读取但未提交的(回滚)的数据;[一般情况下,此级事务应用并不广泛,不能保证数据的合法性(可能会出现虚读),但是性能代价较大,如果当前数据库由应用所独享,可以考虑用“乐观锁”达到同样的目的];
Serializable:
最高登记的事务隔离级别,提供了最严格的隔离机制,上面的3种情况都将会避免掉,这个级别模拟事务的串行执行,逻辑上如同所有事务都处于一个执行队列,依次串行执行,而非并行执行;[此事务隔离级别提供了最严密的隔离机制,但是同时也带来了高昂的性能开销,需谨慎使用,如果需要,可以通过“悲观锁”来解决];
隔离等级 脏读取 不可重复读取 虚读
Read Uncommitted 可能 可能 可能
Read Commited 不可能 可能 可能
Repeatable Read 不可能 不可能 可能
Serializable 不可能 不可能 不可能
分享到:
相关推荐
本文介绍了Oracle 事务概念和知识。在测试通过的基础上,采用讲解结合实例的方式,对Oracle 事务概念和知识进行了说明和讲解,并对关键知识点进行了标注,读者只需按照本文内容逐步进行学习和操作,即可完成Oracle...
本书主要阐述事务概念是如何用于解决分布式系统问题的,以及这些概念如何使我们能够在有限的资金和风险范围内建立高性能、高可用性的应用系统。本书内容广泛,从系统的角度全面阐述事务处理的概念和技术,涉及终端上...
如果你正在学hibernate框架,我认为这份文档对你会有很大的关系。 如果你真的需要可以下载啊,积分又不是很多是吧,关键能学到知识就行了
本文实例讲述了MySQL 事务概念与用法。分享给大家供大家参考,具体如下: 事务的概念 MySQL事务是一个或者多个的数据库操作,要么全部执行成功,要么全部失败回滚。 事务是通过事务日志来实现的,事务日志包括:redo...
NULL 博文链接:https://huiqinbo.iteye.com/blog/2247535
数据库事务:对数据库事务的讲解,事务的概念 理解事务的特性、分类
事务的基本概念和在不同环境下如何使用事务。
) .findAndModify node.js 中 mongodb 事务概念的证明。用法 $ git clone git@github.com:rusintez/mongodb-transactions.git mt$ cd mt$ npm install$ node index.js应用程序接口 var transaction = require ( './...
事务处理概念与技术
事务处理 概念与技术
主要介绍了MySQL中的事务概念,是MySQL入门学习中的基础知识,需要的朋友可以参考下
本章首先介绍客户-服务器事务概念。我们从使用U D P的客户-服务器应用开始,这是最 简单的情形。接着我们编写使用T C P的客户和服务器程序,并由此考察两台主机间交互的 T C P / I P分组。然后我们使用T / T C P,...
GBase 8s事务相关概念
事务概念、ACID原则、事务注解
数据库系统是一个共享系统,会有很多用户同时访问同一数据,例如,订票系统中多个用户同时访问飞往北京的同一航班...本章先讨论事务概念和基本性质,然后再利用事务处理技术来研究数据操作并发控制与数据库的故障恢复。
这是一部关于事务的作品,书中讲述了事务的一些基础知识,包括如果实现事务,做了一些讲解
要求学生加深对数据库并发控制,封锁机制和事务概念的理解,掌握事务的定义,使用方法,能够使用事务对数据库进行简单的并发操作。