MySQL数据库事务隔离级别有4个,而MySQL默认事务处理级别就是repeatable read(可重复读)。
MySQL事务隔离级别主要是四种:读未提交、读已提交、可重复读、串行化。
1.read uncommitted(读未提交)
在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。
允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。
读未提交这种隔离级别,很少应用到实际场景,因为会产生脏读等致命问题。
2. read committed(读已提交)
为了避免脏读,数据库有了比读未提交更高的隔离级别,即读已提交。
这是大多数数据库系统的默认隔离级别,但不是MySQL默认的,是Oracle的默认级别,会产生的问题:不可重复读、幻读。
3.repeatable read(可重复读)
repeatable read(可重复读)是MySQL默认事务处理级别,在这个事务持续期间,禁止其他事务对这个字段进行更新(update)。
可重复读是该隔离级别消除了不可重复读,但是还存在幻象读。
4. serializable(串行化)
完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞。
串行化可以解决所有问题,但一般不会使用,因为它会给每一 行读取的数据加锁,造成大量的等待和锁冲突。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》