我瞭解在isolation levels的維基百科頁面上爲「髒讀」和「幻讀」提供的示例。不過,我不確定如何對以下情況進行分類,以及爲避免這種情況應採用什麼隔離級別或不同的策略。在多次插入事務中讀髒或幻讀?
- 交易1:插入行表A
- 事務2:選擇在表A行
- 事務2:選擇在基於先前的一些B錶行讀取
事務2:提交- 事務1:插入在表B中的行
- 事務1:提交
問題是在T1完成寫入兩個表之前,事務2選擇B中的某些內容。步驟3中的選擇可能需要選擇5中插入的行是正確的。這是一個骯髒的閱讀,幻讀或兩者都不。 READ_COMMITTED隔離級別是否足以避免問題?據我瞭解,用READ_COMMITTED T2不應讀取T1在該點插入的新行。
你在步驟4中提交了什麼 - 我沒有看到事務2修改任何數據? – Kaivosukeltaja
@Kaivosukeltaja既然它只是SELECTS在T2上沒有實際的提交。我只是添加它來顯示該交易沒有更多的操作。我會編輯這個問題以使其更加清晰。 –