事物的隔离级别

事务一共有4种隔离级别:未提交读,已提交读,可重复读,可序列化

1)未提交读RU

未提交读是最低的级别,会产生幻读,脏读,不可重复读,理论上来说只要是没被损坏的数据都会读到;一个事务在运行时能访问其他事务未提交的数据;事务在运行写操作的时候,是不允许其他事务进行写的操作;但是运行其他事务进行读该数据的操作;

举个例子(针对幻读,该种级别出现的脏读,不可重复读,后面两条会有例子):

A事务查询B事务,查询的条数是1;这事B事务插入了一条,A事务继续查询B事务,得到的是2条;

这种隔离级别是可以防止更新丢失

2)已提交读RC

已提交读,属于语句级,一个事务在执行过程中读不到其他食物未提交的数据,但是可以读到已提交的数据,读取数据的事务允许其他事务继续读取该数据;

举个例子(针对):A事务开始时,查询B事务的某一条数据,得到结果为1,B事务这事提交了数据,将结果更改为2,A事务这事再查询B事务这条数据,返回结果为2

此隔离级别可有效防止脏读,但会出现不可重复读,幻读

3)可重复读

可重复读数据事务级别;一个事务可以访问其他食物新增的数据,但是不可访问其他事务修改的数据,读取数据的事务将会禁止写事务,写事务则禁止任何其他事务

举个例子:A事务开始时,查询B事务某一条数据,得到结果是1,B事务修改结果为2,这时A继续查询B,是不允许访问B修改后的数据;因此得到结果还是1;避免的不可重复读

此隔离级别可有效防止不可重复读和脏读,但还是会出现幻读

4)可序列化

严格要求事务一个一个的执行,不允许并发执行;这种可以避免脏读,幻读,不可重复读;但是该事务级别有瑕疵,可能导致其他事务等待,甚至超时;实际开发过程,至少我是没有这样做过

总结:事务的隔离级别选用的一般是已提交读;针对已提交读出现的不可重复读问题,一般使用的是乐观锁,使用version来;数据库默认的隔离级别是可重复读

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值