【数据库】 事务隔离级别说明

比较不同的事务隔离级别

事务隔离级别 说明 是否脏读 不可重复读 幻读
读未提交 (read-uncommitted) 当前事务可以读到其他事务 未提交 的数据。
例如:事务 A 和事务 B,B 的隔离级别是 read-uncommitted。
当 A insert 一记录,但未提交事务时,B 已经可以读到该记录,如果 A 回滚了事务, 则 B 读到的数据是有问题的,这叫脏读
不可重复读(read-committed) 当前事务可以读到其他事务 已提交 的数据。
例如:事务 A 和事务 B, B 的隔离级别是 read-committed。
当 B select 了某个数据后, A 修改了这个数据并且提交事务,这时 B 再读时会读到新数据
可重复读(repeatable-read) 当前事务读不到其他事务的 已提交 的数据。
例如:事务 A 和事务 B,B 的隔离级别是 repeatable-read。
当 B select 了某个数据后, A 修改了这个数据并且提交事务,这时 B 再读时读到的是旧数据。由于 B 读不到新数据,所以只能用旧数据,如果新旧数据不一样,这叫幻读
串行化(serializable) 两个事务互斥。
例如:事务 A 和事务 B, B的隔离级别是 serializable。
当 B 查询或修改某个表时,A 修改这个数据时会阻塞(读不会)如果 A 先修改了某个表, B 不能读或写这个表