数据库事务及隔离级别

数据库事务

四大特性

原子性 隔离性 持久性 一致性

原子性

一个事务的多个数据库操作是一个不可分割的原子单元,只有所有的操作执行成功,整个事务才提交。

一致性

事务操作成功后,数据库所处的状态和他的业务规则是一致的,即数据不会被破坏。如A账户转账100元到B账户,不管操作成功与否,A和B账户的存款总额是不变的。

隔离性

事务之间有一定的隔离级别,保障不同程度的数据一致性。

持久性

一旦事务提交成功后,事务中所有的数据都被持久化到数据库中。

隔离带来的问题及对应的解决级别
  • 丢失更新

    第一类
    在这里插入图片描述
    第二类

在这里插入图片描述
最低的隔离级别Read uncommited即可防止此问题,这里的设置余额账户都是通过 monney = money - 100。这样才能解决,如果是读取到应用内存中,然后再通过复杂地计算得到一个新值,然后 update = newValue,这样子在此隔离级别下不能保证不丢失更新。这样子的问题要使用乐观锁或悲观锁。

  • 脏读

在这里插入图片描述
脏读的解决方案:设置隔离级别为读已提交。

  • 不可重复读

在这里插入图片描述
不可重复读的解决方案:设置隔离级别为可重复读。

  • 幻读

在这里插入图片描述
幻读的解决方案:序列化。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值