在隔离(数据库系统)的维基百科页面上,在解释脏读时,它说:
在 READ UNCOMMITTED 隔离级别中唯一可以防止的是更新在结果中出现乱序;也就是说,较早的更新将始终出现在较晚的更新之前的结果集中。
我很困惑在哪种情况下更新会在结果中出现乱序。我认为这是不可能的,而不是 READ UNCOMMITTED 隔离级别避免了什么?
在隔离(数据库系统)的维基百科页面上,在解释脏读时,它说:
在 READ UNCOMMITTED 隔离级别中唯一可以防止的是更新在结果中出现乱序;也就是说,较早的更新将始终出现在较晚的更新之前的结果集中。
我很困惑在哪种情况下更新会在结果中出现乱序。我认为这是不可能的,而不是 READ UNCOMMITTED 隔离级别避免了什么?
该条目措辞不佳,因此我不怪您对此感到困惑。
作者似乎试图指出,即使允许脏读,也不可能在看到早期更新所做的更改之前遇到后期更新所做的更改。
换句话说,“脏读”将始终包括该时间点之前的所有更改(已提交或未提交)。
与不可重复读取相比,这似乎是一种强调感知差异的方法,正如前句所述:
据我了解,原始定义中没有出现这种区别,所以如果您提到的部分被删除会更好。
请注意,读取未提交隔离的实现不需要经历脏读,只是它可能。一些流行的产品提供了读取未提交的隔离级别,该级别提供了更高程度的隔离和对所谓的读取现象的保护。SQL 标准明确允许这样做。