Transaction

重疊交易

  • December 25, 2011

如果之前已經討論過這一點,或者甚至足以在維基百科上對其進行概述,請提前道歉。我只是覺得問會更有效率!

無論如何,我想從理論的角度詢問交易。特別是,假設我們有兩個(或更多)使用者查看數據集,並且在指示的時間發生以下情況(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 操作如何在彼此之間執行User1User2互動?操作開始於t2by是否User1對數據進行操作,因為它是在事務開始時定義的(即 at t0),對於User2的操作也是如此,因此沒有互動?或者,如果說User1User2事務開始之後但在他們開始操作之前送出了他們的操作,那麼User2正在查看的數據是否會分別更新?此外,在任何衝突的情況下如何保持一致性?

對於所有一般情況,第二個事務將被阻止,直到第一個事務送出或回滾。正如 Martin 指出的那樣,您的隔離級別可能會影響這一點,但 ACID 合規性的全部意義在於將它們分開。

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