事务的隔离级别
# 事务并发可能出现的情况
# 脏读(Dirty Read)
一个事务读到了另一个未提交事务修改过的数据( 读未提交
才会出现)
# 不可重复读(Non-Repeatable Read)
一个事务只能读到另一个已经提交的事务修改过的数据,并且其他事务每对该数据进行一次修改并提交后,该事务都能查询得到最新值。( 读未提交
、 读已提交
都可能会出现)
笔记
顾名思义,在一个事务中每次 getById
返回的值可能不一样,因为每次查询到的都是最新值,即不可重复读。
# 幻读(Phantom)
一个事务先根据某些条件查询出一些记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再次按照该条件查询时,能把另一个事务插入的记录也读出来。( 读未提交
、 读已提交
、 可重复读
都可能会出现)
笔记
幻读与不可重复读类似,但区别在于一个是对某一段数据、一个是对某一条数据的重复读。
# 隔离级别
MySQL 默认隔离级别:可重复读
# 读未提交(READ UNCOMMITTED)
# 读已提交(READ COMMITTED)
# 可重复读(REPEATABLE READ)
# 可串行化(SERIALIZABLE)
# 参考
上次更新: 2024/03/11, 22:37:05