SQL: 脏读能保证看到最新的数据吗?

SQL: Are dirty reads guaranteed to see very latest data?

如果我在 READ UNCOMMITTED 隔离级别打开一个事务,我能保证在每个 table/row 上看到 最新数据吗? IE。一旦其他交易更新一行,我的交易就会看到那个变化? (这类似于对主存储器的直写)

我的 SELECT 会不会得到包含 部分 UPDATE 而不是全部的行?在这种情况下,最小的原子元素是什么 updated/read?

各种关系型数据库系统有区别吗?

没有。 "Dirty data" 表示您依赖于数据库的内部结构,因此无法保证。数据可以写入数据页,然后由于事务回滚而被删除。数据可以写入数据页——然后同一事务中的后续步骤可以覆盖它。

另外,您所要求的是不可能的。您的查询可能正在扫描整个 table。您的阅读发生在页面级别。每个页面可能是不同的事务合并,没有一致性。