面试官:MySQL事务的隔离性是如何实现的?

面试官:MySQL事务的隔离性是如何实现的?_第1张图片

并发场景

最近做了一些分布式事务的项目,对事务的隔离性有了更深的认识,后续写文章聊分布式事务。今天就复盘一下单机事务的隔离性是如何实现的?

隔离的本质就是控制并发,如果SQL语句就是串行执行的。那么数据库的四大特性中就不会有隔离性这个概念了,也就不会有脏读,不可重复读,幻读等各种问题了

对数据库的各种并发操作,只有如下四种,写写,读读,读写和写读

写-写

事务A更新一条记录的时候,事务B能同时更新同一条记录吗?

答案肯定是不能的,不然就会造成脏写问题,那如何避免脏写呢?答案就是加锁

读-读

MySQL读操作默认情况下不会加锁,所以可以并行的读

读-写 和 写-读

基于各种场景对并发操作容忍程度不同,MySQL就搞了个隔离性的概念。你自己根据业务场景选择隔离级别。

√ 为会发生,×为不会发生

隔离级别 脏读 不可重复读 幻读
read uncommitted(未提交读) √<

你可能感兴趣的:(Java面试通关100问,mysql,数据库)