Isolation-Level

READ UNCOMMITTED 隔離級別中的無序結果?

  • May 22, 2021

隔離(數據庫系統)的維基百科頁面上,在解釋臟讀時,它說:

在 READ UNCOMMITTED 隔離級別中唯一可以防止的是更新在結果中出現亂序;也就是說,較早的更新將始終出現在較晚的更新之前的結果集中。

我很困惑在哪種情況下更新會在結果中出現亂序。我認為這是不可能的,而不是 READ UNCOMMITTED 隔離級別避免了什麼?

該條目措辭不佳,因此我不怪您對此感到困惑。

作者似乎試圖指出,即使允許臟讀,也不可能在看到早期更新所做的更改之前遇到後期更新所做的更改。

換句話說,“臟讀”將始終包括該時間點之前的所有更改(已送出或未送出)。

與不可重複讀取相比,這似乎是一種強調感知差異的方法,正如前句所述:

臟讀的工作方式類似於不可重複讀;但是,不需要為第一個查詢送出第二個事務以返回不同的結果。

據我了解,原始定義中沒有出現這種區別,所以如果您提到的部分被刪除會更好。

請注意,讀取未送出隔離的實現不需要經歷臟讀,只是它可能。一些流行的產品提供了讀取未送出的隔離級別,該級別提供了更高程度的隔離和對所謂的讀取現象的保護。SQL 標準明確允許這樣做。

引用自:https://dba.stackexchange.com/questions/291967