面试必备--事务隔离级别安排上!

mysql事务隔离级别直接给面试官安排上!

相信大家面试的时候都会被问到一个问题,就是事务!!!!
众所周知,Java程序事实上是没有事务概念的,
一般都是利用数据库的事务来实现业务上的事务,
现在我们来简单了解一下mysql的事务隔离级别,
我觉得这是一个码农仔必须要懂得!!

mysql事务隔离级别分为四种,学前可以理解,他们的能力逐级递增,后一种就是为了解决前一种的问题,带着这个问题来学习和理解他们分别解决了什么问题就很easy了,话不多说,直接开背!

四种隔离级别

  • 读未提交(最低级的隔离级别):允许事务读取其他事务尚未提交的数据;容易读到未提交的数据,导致脏读
  • 读已提交(不可重复读):允许只读取已经提交的数据;解决脏读,但是在同一个事务的多次查询中,可以其他事务不断提交新的数据,导致读到结果不一致,造成不可重复读的问题
  • 可重复读(默认):在开始事务时,对读取数据进行快照并加行锁,保证事务读到同一个结果;解决了不可重复读,但是同一事务多次执行相同的查询结果却读不到新插入合适的数据,结果不一致造成幻读
  • 串行化:使用排他锁,对执行数据进行锁定,让事务按照提交的顺序依次执行,同一时间只允许一个事务执行,最后强制事务之间完全隔离,只有事务提交后才对外可见。(缺点:会导致性能下降。)

学习和背完四种隔离级别之后,还要学习一个如何解决事务级别的一个高频考点:MVCC概念。

MVCC(又叫多版本并发控制)

mvcc是多版本并发控制,是一种无锁的事务机制,用于多个事务同时访问相同数据时保证事务的隔离性和并发性。核心思想是为每个事务创建一个数据库(快照),然后在事务执行期间保持数据的一致性,同时允许事务并发读取和修改数据;
特点:

  • 在事务生成唯一的一个时间戳或者版本号,事务执行期间只能看到之前提交的版本号
  • 事务根据同一个版本号来确保数据一致性
  • 执行事务途中对条件进行快照,但是是不加锁的可以允许其他事务进行修改,但是可以保证现在的事务看到的数据是一致的,避免幻读;

作为一个初中级码农仔,我觉得以上一般可以搞定90%的简单面试了,当然大神们可以直接忽略了,希望一起继续学习,一起进步!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值