數據庫并發情況(database-level concurrency)
lost update 第一類丟失更新
第一類丟失更新
事務A的回滾導致事務B的更新失敗。
時序圖:
lost update
last commit wins 第二類丟失更新
事務A已經完成,事務B完成后覆蓋了事務A的結果:
第二類丟失更新
時序圖:
last commit wins
dirty read 臟讀
事務A還沒有提交的情況下事務B讀取,讀取完之后事務A回滾
臟讀
時序圖:
dirty read
unreapetable read 不可重復讀
在事務A的兩次讀取中事務B寫了相應的數據
不可重復讀
時序圖:
unrepeatable read
phantom read 虛讀
虛讀與不可重讀類似,都是在兩次讀取中另外的事務做了操作,不過這里的是insert或者delete導致兩次查詢結果集數量都不同
虛讀
時序圖:
phantom read
參考文獻:
- Java Persistence with Hibernate. Manning. 2nd Edition. Gavin King&Gary Gregory