事務簡述
摘要: 數據庫并發操作存在的異常情況:
1.更新丟失(LostUpdate):
A和B事務并發執行,A事務執行更新后,提交;B事務在A事務更新后,B事務結束前也做了對該行數據的更新操作,然后回滾,則兩次更新操作都丟失了。
第一類丟失更新(回滾丟失,Lost update)。
在事務A期間,事務B對數據進行了更新;在事務A撤銷之后,覆蓋了事務B已經提交的數據。
SQL92沒有定義這種現象,標準定義的所有隔離界別都不允許第一類丟失更新發生。
第二類丟失更新(覆蓋丟失/兩次更新問題,Second lost update)。
在事務A期間,事務B對數據進行了更新;在事務A提交之后,覆蓋了事務B已經提交的數據。
第二類丟失更新,實際上和不可重復讀是同一種問題。
2.臟讀取(DirtyReads):
A和B事務并發執行,B事務執行更新后,A事務查詢B事務沒有提交的數據,B事務回滾,則A事務得到的數據不是數據庫中的真實數據。也就是臟數據,即和數據庫中不一致的數據。
3.不可重復讀取
閱讀全文