【问题标题】:What is the difference between "repeatable read" and "snapshot isolation"“可重复读取”和“快照隔离”有什么区别
【发布时间】:2019-08-08 10:42:54
【问题描述】:

可重复读定义为

更高的隔离级别,除了保证 读提交级别,它也保证任何数据读取不能 改变,如果事务再次读取相同的数据,它会发现 以前读取的数据就地、未更改且可供读取。

这似乎与快照隔离非常相似。

可重复读取与快照隔离级别有何不同?

【问题讨论】:

    标签: sql database isolation-level


    【解决方案1】:

    “快照”保证事务中的所有查询都将看到事务开始时的数据。

    “可重复读取”仅保证如果事务中的多个查询读取相同行,那么它们每次都会看到相同的数据。 (因此,不同的行可能会在不同的时间获得快照,具体取决于事务首次检索它们的时间。如果插入了新行,稍后的查询可能会检测到它们。)

    【讨论】:

    • 来自cockroachlabs.com/blog/consistency-model 我知道可重复读取允许幻像,这意味着“如果事务执行查询两次要求匹配条件的行,则第二次执行可能会返回比第一次更多的行。例如,类似于 select * from orders where value > 1000 可能第一次返回订单(a,b,c),第二次返回(a,b,c,d)。似乎不需要多个表。
    • @Javier:感谢您的评论!我明白我的括号内的注释是如何令人困惑的。我现在已经对其进行了调整,并结合了您的示例,这非常有帮助。 :-)
    猜你喜欢
    • 2012-11-02
    • 2021-01-27
    • 2011-02-14
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多