数据库 / 事务的隔离级别

事务的隔离性确保了数据库操作的有序性,防止并发事务导致的数据不一致。脏读、不可重复读和幻读是并发操作常见的问题。事务隔离级别包括读未提交、读提交、重复读和序列化,每个级别对这些问题有不同的解决策略。更高的隔离级别虽然能更好地防止数据异常,但可能牺牲性能。
摘要由CSDN通过智能技术生成

一、什么是事务的隔离性?

两个人同时在一个画本上画画,过程中你一笔我一笔,那么最后最后画出来的一定是一个四不像,多个事务同时操作一个数据也会和上面的情况类似,所以为了让不同的事务之间相互不存在干扰,就需要对事务的操作进行隔离,事务的隔离性也就是将操作同一个数据的事务相互分离,让操作之间分开有序的执行。

二、如果不对事务进行隔离会有哪些问题?

在数据库中,如果多个事务可以同时操作一个数据,那么就会产生脏读、重复读、幻读的问题。

1、脏读

出现原因:修改数据的同时可以读取数据。

案例: 以存款为例,假设 A 与 B 同用一张银行卡,银行卡内余额为 1000 。

操作: 如下图所示,当事务 B 对余额进行了修改但是未提交事务,此时事务 A 对银行卡余额进行读取,并且在这个数据的基础上进行业务操作,进行存款,结果会导致最终的银行卡余额出现问题 ;

2、不重复读

出现原因: 读取数据的同时可以进行修改;

案例: 以取款为例,假设 A 与 B 同用一张银行卡,银行卡内余额为1000。

操作: 如下图所示,事务 A ,事务 B 同时对余额进行访问,事务 A 对余额进行读取,事务 B 对余额进行修改,当事务 A 第一次对余额进行读取后,此时事务 B 提交,那么当事务 A 第二次读取该数据时的数据就与第一次读取的数据不同,这种情况称为可重复读;

3、幻读

出现原因:读取和修改的时候可以 insert 数据;

案例: 以打印银行卡账单存款记录为例,假设 A 与 B 同用一张银行卡,银行卡内存款记录为两条。

操作: 如下图所示,存款表有 2 条数据,A 对存款表进行读取, 当 A 第一次读取到存款记录的时候只有 2 条数据; 但是与此同时 B 往银行卡进行了一笔存款然后提交了事务,在 B 提交了存款事务之后,A 执行了打印操 作,最后发现打印存款表信息的时候却发现有 3 条数据,与之前查出的数据不一样,这种平白无故多出来 的数据就好象发生了幻觉一样所以称为幻读;


三、事务的四种级别

就像上面所说的,如果不对事务进行隔离那么势必就会产生很多问题,所以就需要一种机制来对不同事务间的操作进行隔离,让彼此之间相互不影响,数据库对事务隔离设置有四种程度的级别,分别为读未提交、读提交、重复读、序列化;级别依次从低倒高,级别越高事务的之间的隔离操作就越严格,当然要求越严格其性能也会越低。

1、READ_UNCOMMITTED(读未提交)

这种情况只限制了两个数据不能同时修改,但是修改数据的时候是可以读取的,这级别的事务隔离有脏读、重复读、幻读的问题;

2、READ_COMMITTED(读提交)

这种隔离级别的事务限制了修改数据的时候不允许读取,但是读取数据的时候是可以进行修改的,所以这种事务的隔离级别解决了脏读问题,但会存在重复读、幻读问题;

3、REPEATABLE_READ(重复读)

这种隔离级别的事务限制了读取数据的时候也不可以进行修改,所以解决了重复读的问题,但是读取范围数据的时候可以插入数据,所以还会存在幻读问题;

4、SERIALIZABLE (序列化)

事务最高隔离级别,在该级别下,所有事务都是进行串行化顺序执行,这样就可以避免脏读、不可重复读与幻读所有问题了。但是这种事务隔离级别下事务执行的效率低下,比较耗数据库性能。

转载于:https://zhuanlan.zhihu.com/p/27790194

(SAW:Game Over!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值