事务的隔离级别

1.相关术语

以下都是多线程并发的情况下,A、B事务分属不同线程;

脏读(读取了提交的数据,但是数据回滚了):A事务读取了B事务还没提交的数据,此时A事务读取到的是新的数据,然后B事务回滚了,原数据没有发生变化,此时A事务读取的数据与原数据不一致,这种情况就是脏读;

不可重复读(读取了被提交的数据,指的是更新操作):是指对于同一个数据,由于A事务修改并提交了这个数据,导致B事务在结束之前多次查询该数据得到了不同的结果;

幻读 (读取了提交的数据,指的是增删操作) : 是指在A事务多次读取构成中,B对数据进行了新增或者删除操作,导致A事务多次读取的数据条数不一致;

第一类事务丢失(回滚丢失):是指对于同一份数据,A事务在提交之后,由于B事务做了回滚,导致A事务提交的数据丢失;

第二类事务丢失(提交覆盖丢失):是指A事务与B事务都读取了同一份数据,A事务先提交,B事务后提交,然后B事务把A事务的数据覆盖了;

2.事务的隔离级别

Read uncommitted:允许读取未提交的数据,会产生脏读;

Read committed:只能读取已提交的数据,解决了脏读问题,会产生不可重复读;

Repetable read:允许重复读,事务开启,读取一份数据后,不再允许对这个数据的修改操作,解决了不可重复读问题,会产生幻读;

Serializable:序列化,最高级的事务隔离级别,在该隔离级别下,事务串行化顺序执行(事务组成一串排队执行),可避免脏读、不可重复读与幻读,但是这种事务隔离级别效率低下,比较消耗数据库性能、一般不使用;

oracle与sqlServer默认采用Read committed;

mysql默认采用Repetable read;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y_w_x_k

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值