可串行化与快照隔离级别

问题描述:

使用可串行化和快照隔离级别的好处是相同的吗?可串行化与快照隔离级别

除了一个使用行版本控制,另一个锁定表?

但他们得到同样的好处,如无幻读等

在通常会更好地使用快照隔离级别,以防止锁定?

什么情况下你会喜欢使用序列化快照?

感谢

在SQL92只是四种隔离级别,快照隔离被甲骨文发明了第一个,但SQL Server 2005和InnoDB也支持它;快照隔离通常由MVCC实现〜

拿MariaDB的/ Innodb的为例:
默认隔离级别是可重复读,如SQL92定义,可能会出现此隔离级别幻象,而是因为MVCC的,InnoDB的可能防止幻像即使在重复读〜

我想:
快照隔离不能在SQL标准中定义的时,oracle会将其作为一个非锁串行化隔离时,InnoDB把它当作基于避免幻像重复读隔离MVCC,但效果是一样的:比正常序列化隔离的,非虚线更高的性能比正常重复读隔离〜

他们都使你的交易将看到数据的一致和坚定的看法,因为它是在交易开始前同样的保障。而且您可以多次阅读相同的数据,而无需观察任何更改。

但区别在于SNAPSHOT只为您提供一致的可观察视图。而其他事务可以继续编写,而不需要观察任何更改。

然而SERIALIZABLE将块写入其中落在你正在阅读什么范围内的任何数据。它会锁定您正在阅读的关键值范围。

本文执行的深度去了伟大的工作。 Serializable vs. Snapshot Isolation Level