数据库的4种隔离级别

转载自 后端存储实战课

一共有四种隔离级别:RU、RC、RR 和 SERIALIZABLE,这四种级 别的隔离性越来越严格,性能也越来越差,在 MySQL 中默认的隔离级别是 RR,可重复 读。

先说两种不常用的,第一种 RU 级别,实际上就是完全不隔离。每个进行中事务的中间状 态,对其他事务都是可见的,所以有可能会出现“脏读”。我们上一个小节充值的例子中, 读到了 888 这条流水,但余额还是转账之前的 100 元,这种情况就是脏读。这种级别虽然 性能好,但是存在脏读的可能,对应用程序来说比较难处理,所以基本不用。

第四种“序列化”级别,具备完美的“隔离性”和“一致性”,性能最差,也很少会用到。 常用的隔离级别其实就是 RC 和 RR 两种,其中 MySQL 默认的隔离级别是 RR。这两种隔 离级别都可以避免脏读,能够保证在其他事务中是不会读到未提交事务的数据,或者通俗地 说,只要你的事务没有提交,那这个事务对数据做出的更新,对其他会话是不可见的,它们 读到的还是你这个事务更新之前的数据。 RC 和 RR 唯一的区别在于“是否可重复读”,这个概念也有点儿绕口,但其实也很简单。 在一个事务执行过程中,它能不能读到其他已提交事务对数据的更新,如果能读到数据变 化,就是“不可重复读”,否则就是“可重复读”。


作者:spike

分类: Mysql

创作时间:2023-06-25

更新时间:2024-12-09

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1