繁体   English   中英

隔离级别差异,快照和快照已提交快照?

[英]Isolation Level Difference, SNAPSHOT and SNAPSHOT READ COMMITTED Snapshot?

我有点难以确定SNAPSHOT和SNAPSHOT READ COMMITTED之间的区别? READ COMMITTED是一种悲观的并发方法,如何将其应用于乐观并发? 在这种情况下为SNAPSHOT隔离级别

谢谢,非常感谢您的一些启发

这两个名字令人不安地令人误解。

在SQL Server术语中,SNAPSHOT和SNAPSHOT READ COMMITTED都是隔离级别,也是 SQL Server如何完成并发数据访问隔离的一种实现方式

主要区别 :在SNAPSHOT中,可重复读取和幻像读取被阻止,而在SNAPSHOT READ COMMITTED级别中,您会遇到不可重复的读取,并且还可能会遇到幻像读取。

换句话说,SNAPSHOT是比SNAPSHOT READ COMMITTED更高且更强的隔离)


关于隔离级别:SNAPSHOT等效于SERIALIZABLE,而SNAPSHOT READ COMMITTED等效于READ COMMITTED。 但是实现是不同的。 当SNAPSHOT和SNAPSHOT READ COMMITTED使用记录版本时,另一方面SERIALIZABLE和READ COMMITTED使用阻塞语义来在第一个事务完成时,将并发进程强制阻塞到已更改(或读取)的资源上。


我认为并发和事务隔离很难理解,并且(几乎总是)将它与乐观/悲观的隐喻混合使用,会使理解变得更加困难,无济于事。

阅读已提交

这是默认的隔离级别。 用共享的读锁实现。

读取已提交的快照

与提交Read的隔离级别相同,但是使用行版本控制/ MVCC来实现 这样做的好处是作家不会阻止读者 有人认为这应该是默认设置。 请注意,从某种意义上说,它是相同的隔离级别,它避免了相同的异常。

快照

更高的隔离级别,可减少异常情况

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM