面试官:能详述一下数据库事务隔离的四个级别?

事务隔离级别 特点
Read Uncommitted(读未提交) 事务可以看到和读取到其他未提交事务的执行结果,这样一个事务读取到另一个事务还有没提交的记录,就很可能造成脏读。
Read Committed(读已提交) 事务只能看见已经提交的事务所做的改变,但是这种隔离级别可能会导致不可重复读,因为同一事务的其他实例在该实例处理其间可能会有新的 commit,所以同一个查询操作执行两次或者多次的结果可能不一致。
Repeatable Read(可重复读) 事务的多个实例在并发读取数据时读到同样的数据行,这种隔离级别可能会导致出现幻读,比如当用户读取某一个范围的数据行时,这时候另一个事务在这个数据行范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的 “幻影” 数据
Serializable(串行化) 通过在每个读的数据行上加共享锁,这时候事务就会有顺序的执行,这样事务之间就不会出现冲突了,幻读问题也就解决了,不过由于加了锁,就会出现锁竞争和等待获取锁的情况

总结

MySQL的默认事务处理级别是可重复读,而Oracle的默认事务处理级别是读提交。

发布了321 篇原创文章 · 获赞 345 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/105405710