Transaction
重疊交易
如果之前已經討論過這一點,或者甚至足以在維基百科上對其進行概述,請提前道歉。我只是覺得問會更有效率!
無論如何,我想從理論的角度詢問交易。特別是,假設我們有兩個(或更多)使用者查看數據集,並且在指示的時間發生以下情況(
tX
):t0 User1 starts a transaction t1 User2 starts a transaction t2 User1 runs a DML operation on the dataset t3 User2 runs a different DML on the same dataset t4 User1's operation finishes and is committed t5 User2 commits
我的問題是:DML 操作如何在彼此之間執行
User1
和User2
互動?操作開始於t2
by是否User1
對數據進行操作,因為它是在事務開始時定義的(即 att0
),對於User2
的操作也是如此,因此沒有互動?或者,如果說User1
在User2
事務開始之後但在他們開始操作之前送出了他們的操作,那麼User2
正在查看的數據是否會分別更新?此外,在任何衝突的情況下如何保持一致性?
對於所有一般情況,第二個事務將被阻止,直到第一個事務送出或回滾。正如 Martin 指出的那樣,您的隔離級別可能會影響這一點,但 ACID 合規性的全部意義在於將它們分開。