事务的ACID原则

什么是事务的ACID原则?

A 指的是 原子性(Atomicity)

原子性: 原子性意味着事务的执行作为原子,并不可再拆分,一旦成功执行,就全部成功,一旦失败就全部回滚;

C 指的是 一致性(Consistency)

一致性: 一致性指的是在事务的开始和结束应该满足一致性的约束;
例如 : A+B=100, 如果这个时候 A 的值发生了改变,那么 B 的值也应该发生改变,以此完成这个条件;

I 指的是 隔离性(Isolation)

隔离性:隔离性指的是一个事务的执行不能被并发的其他事务干扰,即该事务操作的数据对其他并发的事务是隔离的,并发的各个事务之间不能互相干扰;

D 指的是 持久性(Durability)

持久性:持久性指的是一个事务被提交,它对数据库中的数据改变就是永久性的;

数据库的并发问题

脏读:脏读指的是一个事务读取了另一个事务还没有提交的数据,如果第二个用户回滚,那么第一个用户读取到的数据就是无效的;

幻读:幻读指的是一个事务读取了一组数据,然后另一个事务在这个数据表中又增加了几行,这时第一个事务再读取事务发现多了几行,这就是幻读;

不可重复读:一个事务读取了一个字段,然后另一个事务更新了这个字段,这个时候第一个个事务再读取这个字段值就不一样了;

数据库的隔离级别

隔离级别描述
读未提交允许事务读取其他事务未提交的数据,脏读,不可重复读 ,幻读都会出现;
读已提交允许事务读取其他事务已经提交的变更,可以避免脏读,但是不可重复读,幻读问题依旧会存在;
可重复读确保事务可以多次在同一个字段中读取相同的值,在这个事务持续期间禁止其他事务对这个字段进行更新,可以避免脏读和不可重复读,但是幻读依旧会出现;
串行化确保一个事务可在一个表中读取到相同的行,在书屋持续期间禁止其他事务对该表进行增删改操作,可以避免一些并发问题,但是性能及其底下;

Oracle 支持的 2 种事务隔离级别:READ COMMITED, SERIALIZABLE。 Oracle 默认的事务隔离级别为: READ COMMITED 。
Mysql 支持 4 种事务隔离级别。Mysql 默认的事务隔离级别为: REPEATABLE READ。

|

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值