数据库 事务及事务的隔离级别

95 篇文章 2 订阅 ¥9.90 ¥99.00
25 篇文章 0 订阅

1. 事务基本概念介绍

  • 1、事务的隔离性

多个事务操作同时操作一个数据,会造成干扰,因此需要对他们之间进行隔离(只需对操作同一数据的事务隔离即可),燃操作之间分开有序的执行。

  • 2、如果不对事务进行隔离,出现的问题(脏读、不可重复读、幻读)

(1)脏读(重点突出在读,即读到的数据为脏数据,因为有其他人正在修改)
出现原因:修改数据的时候,同时可以读取数据;
以用户A和B同时对一张银行卡进行存、取操作为例来说明。
(2)不可重复读(重点突出在同一个事务中,前后两次读取时,读到的结果不一样)
查询原因:读取数据时同时可以进行修改;
以用户A和B同时对一张银行卡进行取款操作为例来说明。
A先读查询余额
B再读查询余额-->取款操作
A取款-->提交事务-->失败(余额不足,因为已经被B取走,这样就造成了A前后读取到的值不一样,即出现了重复读问题)

(3)幻读(重点突出同一个事务中,平白无故多出来几条数据)
出现原因:读取和修改的时候,可以insert数据;
以用户A打印银行账单为例(A和B共用同一张银行卡)
A先读取账单数据,加入为2条
->B对卡进行了存款操作
->A执行打印操作,打印出来确为3条账单(平白无故多出来一条,就像发生了幻觉一样,所以称为幻读)

 

  • 3、事务隔离级别

(1)读未提交(READ_UNCOMMITTED)
只限制了2个事务不可同时修改,但修改的时候是可以读的。上述3个问题一个都没解决


(3)重复度(REPEATABLE_READ)
读数据的时候,不可修改(但是允许insert),解决了脏读和不可重复度,但是会存在幻读问题(因为没有限制insert)
(4)序列化(SERIALIZABLE )
所有事务的操作都是串行的,可以避免脏读、不可重复的、幻读的问题。但是性能变弱了


 

2. 参考资料

https://zhuanlan.zhihu.com/p/27790194

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值