数据库的隔离性与隔离级别以及隔离级别产生的影响

隔离性:个人理解是要保证两个同时发生的事务之间不会感受到对方的存在,不会相互影响。和其他三个原则(原子性、一致性、持久性)是数据操作需要注意的原则。为了满足隔离性,辅助的提出了4个隔离级别,当然约束越严格效率就越低。

隔离级别:

1)read uncommitted 读取未提交的数据,即A事务可以看到其他事务已经加减但是未提交的数据。

A事务可以读到B事务已经加减的数据但如果B事务之后失败发生回滚  A事务就读到了被回滚的脏数据 所以网上常叫“脏读”

2)read committed 读取已提交的数据 即A事务只能看到其他事务提交后的数据

A事务不会读取到B事务中已经加减但是事务未提交的数据,这样即使B回滚A也不会读到脏的数据,数据起码是对的,

但B事务在A提交前提交,A事务需要重复读两次时,第一次读到事务B未提交之前的数据第二次读到了B已提交的数据,就造成了两次读到的数据不一致,从而有可能影响到A的业务。

3)repeatable read 可重复读

A事务读取数据后B事务加减数据并提交事务,A事务再次读取还是会读到B事务未加减前的值,也就是A事务在未提交之前会无视B事务对数据的影响,只有当A事务提交之后才能看到B事务对数据的修改。

4)serializable 可串行化

强制排序事务使事务不能交叉更新同一条数据。

就是在行上使用共享锁,防止脏读、重复读、幻读发生,极端情况下会造成大量的超时和锁竞争。

自问自答:

1)重复读和幻读的区别是什么?

重复读是指读到了B已提交的数据和读到B未提交的数据不一致。

可重复读级别为了解决上面的重复读造成的数据不一致性,而伪造了一致性,导致最后操作时追加同一条数据会产生问题。

经过实践:发现如果B事务插入了一个主键为8的数据并提交,A查询后还是看不到8(前提是A在B事务提交前查询过一次)A插入数据会失败,查询还是看不到。A直接去跟新8会更新成功,而且8既然已经被发现了  A再查询就可以看到了。

对一条B插入的数据在B未提交前A插入同样的数据会挂起。

2)幻读会产生什么问题?

由于无法读到其他事务的更新可能在追加操作时会发生数据不一致性。

3)什么是数据库的共享锁?

共享锁又叫写锁。

明天回答。

总结自:https://www.cnblogs.com/snsdzjlz320/p/5761387.html 少数几个写的比较清楚的博文

原文地址:https://www.cnblogs.com/fastLearn/p/8232742.html

时间: 2024-10-09 19:31:16

数据库的隔离性与隔离级别以及隔离级别产生的影响的相关文章

【转】涨姿势了,数据库隔离性的几个级别

原文:http://blog.sina.com.cn/s/blog_3fc85e260100msz3.html 每个事务使得数据库从一个一致的永久状态原子地转移到一个新的一致的永久状态,可以说,事务的ACID(the transactional properties of Atomicity, Consistency, Isolation and Durability)属性是数据库事务的灵魂: ·  原子性 事务的原子性首先体现在事务对数据的修改,即要么全都执行,要么全都不执行,例如,从银行账户

数据库事务的四大特性以及事务的隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执

谈数据库事务隔离性

写在前面 近两年分布式数据库技术加速发展,而由于金融行业技术生态的限制,周围很多同学对其并没有深入的了解,所以进行高性能.高可靠系统设计时往往缺少这一利器.Ivan希望以系列文章的方式与大家交流探讨,加深我们对分布式数据库的认识.本文是该系列文章的第一篇,主要探讨事务管理中的隔离性,厘清相关概念和关键技术,为后面阐述分布式数据库的事务管理做一个铺垫,姑且算是一篇前传吧. 正文 我们首先从定义出发,事务管理包括原子性.一致性.隔离性和持久性四个方面,即ACID.所有数据库专著都会给出这个四个特性的

数据库事务的四大特性以及事务的隔离级别(mysql)

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执

数据库事务的四大特性以及事务的隔离级别详解

作者 : fjdingsd 来源 : 博客园 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性

数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制&隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执

5分钟带你读懂事务隔离性与隔离级别

前言 我们在上一章节中介绍过数据库的带你了解数据库中事务的ACID特性的相关用法.本章节主要来介绍下数据库中一个非常重要的知识点事务的隔离级别.如有错误还请大家及时指出~ 问题: 事务的隔离级别有哪些? 如果并发事务没有进行隔离,会出现什么问题? 以下都是采用mysql数据库 在多个事务并发做数据库操作的时候,如果没有有效的避免机制,就会出现种种问题.大体上有以下问题: 一.引发的问题 在并发事务没有进行隔离的情况下,会发生如下问题. 问题一:脏读 脏读指一个事务读取了另外一个事务未提交的数据.

MySQL--事务,隔离性和隔离级别

事务 事务就是一组数据库操作,要么全部执行成功,要么全部执行失败,在MySQL中,事务是依靠存储引擎层实现的. ACID(Atomicity,Consistency,Isolation,Durability) 原子性是指事务是不可再分的,是最小的工作单元. 一致性是指数据的完整性必须保持一致. 隔离性则是指多个用户并发访问数据库时,必须为每个用户开启一个事务,这些事务相互之间不受影响相互隔离. 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其

数据库事务的ACID(原子性,一致性,隔离性,持久性)四大特性

我从维基百科翻译的.翻译水平有限: 在计算机科学中,ACID(原子性,一致性,隔离性,持久性)是数据库事务的一组属性,旨在即使在发生错误,断电等情况下也可以确保有效性.在数据库的上下文中,这是指一系列数据库操作,它们可以满足ACID属性(并且可以将这些属性视为对数据的单个逻辑操作)称为事务.例如,从一个银行帐户到另一个银行帐户的资金转移,即使涉及多个更改,例如从一个帐户借记而向另一个帐户贷记,也只是一次交易. 1983年, Andreas Reuter和TheoHärder在吉姆·格雷(Jim