拼多多面试官:说说数据库事务隔离级别

什么是数据库事务?数据库事务是一系列数据库操作的集合,数据库事务是数据库管理系统与文件系统的重要区别之一。

从事务的四个特性谈起

记得之前一个教数据库的老师说过,如果考研复试遇到了她,一定会问什么是ACID。一般学过数据库的同学基本都能说上一些。A指的是Atomicity,也就是原子性,原子性是指一个事务的所有操作要么全部做完,要么全部不做,不存在停在中间环节的情况。C指的是Consistency,也就是一致性,事务在执行前后,数据保持一致。例如小张给小王转了100块钱,那么小张的账户里少了100元,同时小王的账户里多了100元,但是他们的总金额不变。I是Isolation,是指隔离性,数据库允许多个并发事务同时对其数据进行读写和修改,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。D指持久性(Durability),是指事务一旦结束,对数据的修改就是永久性的。

事务并发带来的问题

事务并发往往会带来一些不可预知的问题,一般可以包括脏读幻读不可重复读丢失更新

脏读

脏读是指事务A未提交的数据被事务B读取,事务A回滚,事务B读到的数据是脏数据。

幻读

幻读是指事务A查询一次数据后,事务B增加或减少了几条数据,事务A再次查询发现和之前查到的数据条数不一致,就好像出现了幻觉一样。

不可重复读

不可重复读是事务A两次查询期间事务B修改了数据,导致事务A两次读取的数据不一致。

丢失更新

丢失更新指的是事务A和事务B同时写一个数据,那么先写的更新就会丢失,还有一种情况是两个事务同时更新一条数据,某一事务回滚导致另一事务的更新也丢失。

事务隔离级别

事务有四种隔离级别,由低到高分别是读未提交读已提交可重复读可串行化

  • 读未提交(READ UNCOMMITTED):读未提交是最低的隔离级别,不同事务之间可以读取未提交的数据,因此可能产生脏读、不可重复读和幻读。

  • 读已提交(READ COMMITTED):读已提交的级别略高于读未提交,事务之间只能读取已经提交的数据,可能产生不可重复读和幻读的问题。

  • 可重复读(REPEATABLE READ):可重复读对同一字段多次读取的结果一致,可以防止脏读和不可重复读,但还是会产生幻读的问题。

  • 可串行化(SERIALIZABLE):可串行化是最高级别的事务隔离级别,是完全串行化执行事务,可以有效防止幻读、不可重复读和脏读。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值