数据库事务的隔离级别

数据库事务的隔离级(从低到高)

1. Read UnCommitted   (读未提交)   

2. Read Committed        (读已提交)    解决脏读

3. Repeatable Read        (可重复读)    解决重复读

4. Serializable                  (串行化)       解决幻读


四种事务的作用
我们讨论事务场景大多在并发的时候,因此多是围绕事务并发的情况来讲


1. Read UnCommitted   (读未提交)

两个并发事务,事务A提交数据,事务B读取数据,事务B读到了事务A没有commit的数据,出现这种情况则出现了脏读,如何避免脏读,就出现了下面的事务隔离级别

     2. Read Committed   (读已提交)
两个并发事务,事务A更改数据,事务B更改数据,事务A事先读取了数据,这是B进来也读取了数据,更改数据并提交了事务,当A再去更改数据的时候发现,数据已经不正确了,

虽然Read committed 解决了脏读的情况,却有了不可重复读的现象

大多数数据库的默认级别就是Read committed,比如Sql Server , Oracle。如何解决不可重复读这一问题,请看下一个隔离级别。

    3. Repeatable Read  (可重复读)

当数据库事务隔离级别设置成  '可重复读 ' 的时候,可以解决不可重复读的情况,事务A去操作数据(事务开始),则别的事务不可能对该记录进行更改,

虽然reperatable Read 解决了不可重复读的情况,但是有可能出现幻读的情况

事务A查询数据,而这时候事务B进来更改了数据,并提交了事务,事务A打印出来的数据可能是加上事务B操作的数据,就出现了幻读
my sql  默认是Repeatable Read


    4. Serializable 序列化

Serializable是最高的事务隔离级别,同时代价也花费最高,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻像读。
 



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值