隔离级别差异、SNAPSHOT 和 SNAPSHOT READ COMMITTED 快照?
Isolation Level Difference, SNAPSHOT and SNAPSHOT READ COMMITTED Snapshot?
我有点难以辨别 SNAPSHOT 和 SNAPSHOT READ COMMITTED 之间的区别? READ COMMITTED 是一种悲观的并发方法,如何将其应用到乐观并发中?在这种情况下,SNAPSHOT 隔离级别
谢谢,非常感谢您的一些启发
这两个名字都具有令人不安的误导性。
在SQL服务器术语中,SNAPSHOT 和 SNAPSHOT READ COMMITTED 都是隔离级别也是一种实现方式SQL服务器如何完成并发隔离数据访问。
主要区别:在 SNAPSHOT 中可重复读取和幻读被阻止,而在 SNAPSHOT READ COMMITTED 级别中,您可能会遇到不可重复读取,也可能会遇到幻读。
换句话说,SNAPSHOT 是比 SNAPSHOT READ COMMITTED 更高更强的隔离)
关于仅隔离级别:SNAPSHOT 等同于 SERIALIZABLE,SNAPSHOT READ COMMITTED 等同于 READ COMMITTED。但是实现是不同的。虽然 SNAPSHOT 和 SNAPSHOT READ COMMITTED 使用记录版本,但另一方面 SERIALIZABLE 和 READ COMMITTED 使用阻塞语义强制阻塞并发进程到已更改(或读取)的资源,而第一个进程完成其事务。
我认为并发和事务隔离很难理解,并且(几乎总是)将它与 optimistic/pessimistic 比喻混合使用比帮助更能加深理解。
读取已提交
这是默认隔离级别。使用共享读锁实现。
读取已提交的快照
与 Read committed 相同的隔离级别,但使用行版本控制实现/MVCC. The advantage is that writers don't block readers。有些人觉得这应该是默认设置。请注意,从某种意义上说,它是相同的隔离级别,因为它避免了相同的异常。
快照
允许 fewer anomalies 的更强的隔离级别。
我有点难以辨别 SNAPSHOT 和 SNAPSHOT READ COMMITTED 之间的区别? READ COMMITTED 是一种悲观的并发方法,如何将其应用到乐观并发中?在这种情况下,SNAPSHOT 隔离级别
谢谢,非常感谢您的一些启发
这两个名字都具有令人不安的误导性。
在SQL服务器术语中,SNAPSHOT 和 SNAPSHOT READ COMMITTED 都是隔离级别也是一种实现方式SQL服务器如何完成并发隔离数据访问。
主要区别:在 SNAPSHOT 中可重复读取和幻读被阻止,而在 SNAPSHOT READ COMMITTED 级别中,您可能会遇到不可重复读取,也可能会遇到幻读。
换句话说,SNAPSHOT 是比 SNAPSHOT READ COMMITTED 更高更强的隔离)
关于仅隔离级别:SNAPSHOT 等同于 SERIALIZABLE,SNAPSHOT READ COMMITTED 等同于 READ COMMITTED。但是实现是不同的。虽然 SNAPSHOT 和 SNAPSHOT READ COMMITTED 使用记录版本,但另一方面 SERIALIZABLE 和 READ COMMITTED 使用阻塞语义强制阻塞并发进程到已更改(或读取)的资源,而第一个进程完成其事务。
我认为并发和事务隔离很难理解,并且(几乎总是)将它与 optimistic/pessimistic 比喻混合使用比帮助更能加深理解。
读取已提交
这是默认隔离级别。使用共享读锁实现。
读取已提交的快照
与 Read committed 相同的隔离级别,但使用行版本控制实现/MVCC. The advantage is that writers don't block readers。有些人觉得这应该是默认设置。请注意,从某种意义上说,它是相同的隔离级别,因为它避免了相同的异常。
快照
允许 fewer anomalies 的更强的隔离级别。