脏读:当一个事务开始更新数据,但是这个事务并没有完全提交,这个时候第二个事务开始读取数据,把第一个事务所更改的数据读了出来,
第二个事务读取的数据时临时的,因为有可能第一个事务最终有可能做回滚操作
不可重复读:在一个事务中多次读取某一行数据,可能会得到不同的结果
幻读:在一个事务中,我们读取数据,发现没有特定的行,第一个事务还没结束,这个时候第二个事务插入了该行数据,
然后在第一个事务再次读取时,该行数据突然出现了
SQLServer数据库支持一下隔离级别:未提交读、已提交读、可重复读、快照、可序列化。
隔离级别 | 是否申请共享锁 | 何时释放 | 有无范围锁 |
未提交读 | 不申请 | -- | 无 |
已提交读 | 申请 | 当前语句执行完 | 无 |
可重复读 | 申请 | 事务提交时 | 无 |
可序列化 | 申请 | 事务提交时 | 有 |
不同隔离级别的并发副作用:
隔离级别 | 脏读 | 不可重复读 | 幻读 |
未提交读 | 是 | 是 | 是 |
已提交读 | 否 | 是 | 是 |
可重复读 | 否 | 否 | 是 |
快照 | 否 | 否 | 否 |
可序列化 | 否 | 否 | 否 |
新闻热点
疑难解答