【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解

淺談對數(shù)據(jù)庫隔離級別的理解

成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、蘭山網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5開發(fā)、商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為蘭山等各大城市提供網(wǎng)站開發(fā)制作服務。

當人們提及數(shù)據(jù)庫管理系統(tǒng) (DBMS),必會提及事務、 ACID特性以及事務隔離級別。 事務本身是為了保證系統(tǒng)的運行狀態(tài)最終將處于一致性 (滿足一組約束條件 )的狀態(tài)而出現(xiàn)的概念,其中的 ACID特性中的 I(Isolation)要保證在并發(fā)操作情況下 數(shù)據(jù)庫 最終可以處于 ”一致 ”的狀態(tài)。但是自問一下便會產(chǎn)生諸多疑點 :  到底什么是事務隔離級別?為什么要有事務隔離級別?作為理論基礎的每種隔離級別如何定義以及分別有什么作用呢?下面主要結合經(jīng)典論文 [1]和相關經(jīng)驗來簡要地談談自己的理解。

(一 ) 到底什么是事務隔離級別?為什么要有事務隔離級別?

事務四大特性 ACID中的 I(Isolation)字面意思是 ”隔離性 ”,實質(zhì)上就是指對數(shù)據(jù)操作的并發(fā)控制。那么該問題換句話說即, 為什么需要并發(fā)控制?它解決了什么問題?

在數(shù)據(jù)庫中, 如果對于同一數(shù)據(jù)項的所有事務操作都被串行化地執(zhí)行,那么執(zhí)行過程與結果是沒有問題的。如果存在并發(fā)操作,即多個事務的生命周期 (時間區(qū)間 )之間存在交集,就 可能產(chǎn)生操作上的沖突和依賴,進而引發(fā)異常現(xiàn)象。對于同一數(shù)據(jù)項,兩個并發(fā)操作的執(zhí)行過程一定是有先后而非物理上的同時的,其結果取決于爭搶與調(diào)度策略。 操作順序類型可以分為 讀 -讀、讀 -寫、寫 -讀、寫 -寫  4種類型,其中后三種包含寫的操作序列是有沖突的, 它們可能會引發(fā)執(zhí)行結果的異常,或者叫異?,F(xiàn)象 (Anomaly)。

例如,有如下命令在沒有任何并發(fā)控制機制 (比如鎖 )的情況下按如下調(diào)度順序執(zhí)行 :

時刻

事務 1

事務 2

t0

BEGIN;  // x = 10

BEGIN;

t1

w1[x]: 更新  x = x + 1;  // x = 11


t2


r2[x]: read x;  // x = 11,依賴 w1[x]

t3

a1: abort(引發(fā)回滾 );  // x = 10


t4


更新 y : = x

表 1.

這樣構成的 執(zhí)行序列模式 (現(xiàn)象 )是 w1[x]...r2[x]...a1...,符合  “寫 -讀 ” 的沖突模式,而上述 case確實產(chǎn)生了異常,即 :

(1) 按照上述執(zhí)行序列,事務 2讀取的數(shù)據(jù)是事務 1未提交的臟數(shù)據(jù) x = 11,實際上是不應當被事務 2看到的不一致的數(shù)據(jù),如果該數(shù)據(jù)被事務 2后續(xù)應用于更新某條記錄 y := 11,那么將導致數(shù)據(jù)庫的狀態(tài)不一致。 (這便是大家所知的 ”臟讀 ” )

(2) 如果把事務 1放在事務 2之前執(zhí)行,那么這是串行化的事務執(zhí)行方式,這時事務 2讀到的 x值應該是事務 1未開始前的值 (已回滾 ),即 x = 10,這是正確的結果。具體如下 :

時刻

事務 1

事務 2

t0

BEGIN;  // x = 10


t1

w1[x]: 更新  x = x + 1;  // x = 11


t2

  a1: abort(引發(fā)回滾 );  // x = 10,結束




BEGIN;  // x = 10,與事務1串行,無問題

t3


 r2[x]: read x;  // x = 10

t4


更新 y : = x



... ...

表 2.

這樣, (1), (2) 兩種調(diào)度方式所對應的保序的執(zhí)行序列產(chǎn)生的結果是不一樣的, (2)串行化執(zhí)行是正確的, (1)的結果 (因為臟讀 )產(chǎn)生了不一致的數(shù)據(jù)狀態(tài)。

上述異常只是諸多類異常中的一種,并發(fā)控制就是要解決這些異常,但是并發(fā)控制需要達到什么程度呢?因為并發(fā)控制程度高對應著并發(fā)執(zhí)行效率低,數(shù)據(jù)庫用戶并非時刻都需要最強的并發(fā)控制方式,這是一致性與并發(fā)度的權衡,隔離級別就是這一權衡的控制參數(shù)。

我們把事務及事務隔離級別的語境設定在數(shù)據(jù)庫系統(tǒng)上,那么可以認為 :

從數(shù)據(jù)庫使用者的角度來看, 異常現(xiàn)象是并發(fā)操作時可能出現(xiàn)的問題, 并發(fā)控制是避免某些異常現(xiàn)象導致問題的過程或手段, 隔離級別是對并發(fā)控制程度的 抽象描述。即 數(shù)據(jù)庫使用者通過設定事務隔離級別,來配置數(shù)據(jù)庫系統(tǒng),使之在并發(fā)操作時能夠規(guī)避某些異常現(xiàn)象。

從數(shù)據(jù)庫開發(fā)者的角度來看,需要解決并發(fā)操作時的 異?,F(xiàn)象是根本需求,而 隔離級別是把這些無窮多的現(xiàn)象級需求進行了分類、抽象、歸納,將 規(guī)避異?,F(xiàn)象之需求轉(zhuǎn)化為了 滿足有限種類隔離級別之需求。即 數(shù)據(jù)庫開發(fā)者只需要實現(xiàn)定義好的幾種隔離級別,就可以為數(shù)據(jù)庫系統(tǒng)提供規(guī)避某些 (可能是無窮多 )異常現(xiàn)象的功能。具體 DBMS中的隔離級別的定義可能會有區(qū)別,但實現(xiàn)上至少需要不弱于 ANSI-SQL標準。

隔離級別如何設定是與異?,F(xiàn)象 /行為序列的分類、歸納方式有密切聯(lián)系的。要想嚴謹 (從數(shù)學上 )地定義隔離級別,必然需要對異常現(xiàn)象給出形式 (而嚴格 )化的定義。

本節(jié)要點 :

-> 并發(fā)事務導致執(zhí)行結果破壞某些約束  (問題源頭 )

-> 起因歸為讀寫沖突 (w-w/w-r/r-w)

-> 異?,F(xiàn)象 (Anomaly)(不完全 )歸納為異常模式

-> 更廣義的行為序列 (現(xiàn)象 -Phenomenon)被歸納為行為序列模式

-> 禁止行為序列或異常序列模式可規(guī)避某些并發(fā)操作問題

-> 根據(jù)行為序列模式的歸納來定義 : 解決某些問題即符合特定隔離級別。

(二 ) 如何標準化、形式化地描述并發(fā)讀寫的 (異常 )現(xiàn)象?如何理解它們?

在論文 [1]中,已經(jīng)給出了并發(fā)操作的異?,F(xiàn)象或者普通現(xiàn)象的形式化描述。即 使用 行為序列描述一系列操作過程,其中行為被簡化抽象為讀、寫兩種類型,數(shù)字標注表示行為的所屬事務 (事務 N),括號中的參數(shù)表示操作對象 (x,y,z,...)。形如 ”w1[x]...r2[x]...”就表示一個行為序列模式(表3-P2),那么對 行為序列的形式化定義可以看做是 行為序列模式,是對具有一定共性 ( 特征 )的行為序列的抽象表達。它表達了 某種模式的行為序列的集合。

下文分為幾個部分 : 行為序列模式的形式化定義、操作對象分類、形象化理解、各類模式匯總,來對本節(jié)的問題進行說明。 ( 以下均以單版本值的情況進行說明,不考慮 MVCC)

*  行為序列模式的場景分類 :  (P0-P3,A5 等定義見 表3.)

分類 1.  單條數(shù)據(jù)的并發(fā)操作現(xiàn)象  ( one data item)
>>  單條數(shù)據(jù)的讀寫操作序列的形式化描述是完備的,對應于 P0(w-w沖突 ),P1(w-r沖突 ),P2(r-w沖突 ) 三類讀寫沖突 (r-r沒有沖突 );

分類 2.  數(shù)據(jù)集合的并發(fā)操作現(xiàn)象  ( one data set of data items)

>> 數(shù)據(jù)集操作對應于 P3(潛在幻象 );

分類 3.  帶約束的數(shù)據(jù)項操作現(xiàn)象  ( data items with constraints)

>> 具有關聯(lián)約束的數(shù)據(jù)操作對應于 A5(A5A(r-w-w-r),A5B(r-r-w-w),...)以及其它可能的涉及數(shù)據(jù)關聯(lián)約束的行為模式;

*  常見的行為序列模式及其形式化定義 (包含了異常序列模式 )

常見現(xiàn)象

異?,F(xiàn)象集合 /模式

(原始 ANSI-SQL標準所涉及 )

普通現(xiàn)象集合 /模式

(包含了相應異?,F(xiàn)象, )

(增強版 ANSI-SQL隔離級別 )

e.g. 臟寫

記錄 w-w 沖突

未定義 A0

P0:  w1[x]...w2[x]...(c1/a1/c2/a2)

e.g. 臟讀

記錄 w-r 沖突

A1:  w1[x]... r2[x]...a1

先寫后讀 ;

P1:  w1[x]...r2[x]...(c1/a1/c2/a2)

P1包含 A1;

e.g. 不可重復讀

記錄 r-w 沖突

A2:  r1[x]...w2[x]...c2... r1[x]

先讀后寫 ;

P2:  r1[x]...w2[x]...(c1/a1/c2/a2)

P2包含 A2;

e.g. 幻象

集合 r-w沖突

A3:  r1[P]...w2[x in P]...c2...r1[P]

先讀后寫 ;

P3:  r1[P]...w2[x in P]...(c1/a1/c2/a2)

P3包含 A3;

e.g. 寫丟失

記錄 r-w-w沖突

-

P4:  r1[x]... w2[x]...w1[x]...c1

P2包含 P4, 先讀后寫 ;

e.g. 讀偏斜

關聯(lián)數(shù)據(jù)沖突

A5A:  (屬于 A5類模式 )

r1[x]...w2[x]...w2[y]...c2... r1[y]

先讀后寫 ;

P2包含 P4

e.g. 寫偏斜

關聯(lián)數(shù)據(jù)沖突

A5B:  (屬于 A5類模式 )

r1[x]...r2[y]... w1[y]...w2[x]...(c1/c2)

先讀后寫 ;

P2包含 A5

... (等等 )

...

...

表 3.

說明 : (以下說明不是最重點的,主要是為后面的 行為模式關系圖做鋪墊,可對照查看 )

(1)     行為序列說明 : 例如, P1: w1[x]...r2[x]...(c1/a1/c2/a2),要表達的是 事務 1寫數(shù)據(jù)項 x,之后 (還可能經(jīng)歷其它數(shù)據(jù)項 /事務的操作 ),事務 2寫數(shù)據(jù) x,之后,事務 1/2以任意順序和方式 (提交 /中止 )結束;

(2)     行為序列模式的語義 : 滿足某種模式 P的序列可以構成一個集合,集合中有些具體序列 可能產(chǎn)生異常結果,也可能不會。比如,符合 P2模式的序列不一定就符合 A2(臟讀 ),而符合 A2的具體序列不一定就會造成真正的影響。 (比如 r2[x]中的讀取操作不被任何后續(xù)的應用程序或人員的操作鎖依賴而僅僅看一下就丟棄了,那么就不會產(chǎn)生影響 )。

(3)      A1-A3: 這 3種異?,F(xiàn)象序列模式是 ANSI-SQL定義隔離級別所使用的異常行為序列模式,但是這些描述的是某個具體種類的異常,對記錄級讀寫沖突的描述不夠完備,因此論文 [1]中提出了 P0-P3來擴充 A1-A3。 (比如, A1模式為 : “w1[x]...r2[x]...a1”,是 3元組;而 P1模式為 : “w1[x]...r2[x]...”,是 2元組 (因為任意的結束順序和方式 (c1/a1/c2/a2)并沒有夠成對序列模式的限制,因此可忽略 )。 顯然 A1是 P1的特例 , A2/P2,A3/P3類似 )

(4)      可串行化級別 : 上述 A1-A3的不完備也說明了基于 A1-A3來定義的 ANSI-SQL隔離級別不夠嚴謹 ( 具體見 (三 )的表 4 )。

(5)      P4: 寫丟失現(xiàn)象

a)         P4不同于 P0,雖然都涉及 w-w沖突,但是 P0的模式是 ”w1[x]-w2[x]-...”,而 P4的沖突是 ”r1[x]...w2[x]...w1[x]-...”,相對于 P0在最前面還有一次同一數(shù)據(jù)項的讀取操作,這暗示了后面的 w1[x]有可能依賴于 r1[x]的讀取結果,而 P0并沒有這一點。

b)        P4”r1[x]...w2[x]...w1[x]-...c1”寫丟失現(xiàn)象被包含于 P2” r1[x]...w2[x]...”(先讀后寫 )。

(6)      A5:  具有關聯(lián)約束的 兩個數(shù)據(jù)項的操作序列,可能會導致關聯(lián)約束被破壞 (可以是用戶自定義的約束 )。需要注意,基于任意多個數(shù)據(jù)項之間的關聯(lián)約束并未在文中明確定義,因此在 P0-P3,A5之外還存在著其它的異?,F(xiàn)象

a)         A5A 讀偏斜 : 事務 1要讀取 2個具有一定約束的數(shù)據(jù)項,需要 2次讀操作 (r1[x]......r1[y]),在它們之間被插入了事務 2的關于寫操作 (r1[x]... w1[x]...w2[y]...c2...r1[y]...),這樣在第二次讀操作時約束關系已經(jīng)被破壞了。

b)        A5B 寫偏斜 : 兩個事務分別要先讀取一個數(shù)據(jù)項 (r1[x]...r2[y]...),再根據(jù)讀到的值來計算并更新另一個數(shù)據(jù)項 (...w1[y]...w2[x]),如果兩個事務無法可串行化的執(zhí)行,那么可能會出現(xiàn)破壞約束的情況。例如 :初值 x=y=50; r1[x=50]... r2[y=50]...w1[y:=x+1=]... ... ... ...

(7)      P2: 不可重復讀現(xiàn)象,該現(xiàn)象是比較有意思的 :

a)         P2包含了 A2,這在前面 (3)已經(jīng)提及。

b)        P2包含了 P4,這在前面 (4)已經(jīng)提及。

c)         P2包含了 A5A與 A5B,這在前面已經(jīng)提及。

(8)     END

至此可見, A(i)序列模式 包含于  P(i)序列模式 i = 1,2,3 . 而 P0更是 A(i)類沒有定義出來的序列模式。 P(i)類模式 (w-w,w-r,r-w + 數(shù)據(jù)項 /數(shù)據(jù)集合 ) 比  A(i)類異常集合更加完備。

Q. 不可重復讀現(xiàn)象 (A2/P2)與幻象現(xiàn)象 (A3/P3)的區(qū)別與聯(lián)系是什么?

A. 不可重復讀是僅僅針對單條數(shù)據(jù)。實際上可以認為,幻象是針對數(shù)據(jù)集合的不可重復讀現(xiàn)象,因此幻象不僅包含了 MySQL中 RR隔離級別所能避免的幻讀 (因為插入 數(shù)據(jù)導致集合不可重復讀 ),而是可以擴展到 因為增 /刪 /改數(shù)據(jù)記錄而導致的給定謂詞條件下的數(shù)據(jù)集合的不可重復讀。

例如 : SELECT pk_id FROM t WHERE cond;

在 RU(read uncommitted)隔離級別下,通過 WHERE條件相關的數(shù)據(jù)記錄進行增 /刪 /改,即 可改變查詢結果集。這里需要改變的數(shù)據(jù)記錄是要引起 cond判定的變化的,否則并不能影響查詢結果。比如  INSERT一個滿足 cond的 key值, UPDATE一個 key值 (其舊有或目標 key值滿足 cond), DELETE一個 key值,都可以改變滿足 cond的查詢結果集。

*  異?,F(xiàn)象的形象化說明

(1) 對于 A1-A2的異常 (A3類似于 A2)可以形象化表示為 ” V 型 ”異常 :

【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解

圖 1.

(2) 什么是 A5類異常?什么是讀傾斜、寫偏斜?

實際上論文 [1]中的 A5表達的是具有關聯(lián)約束的 兩個數(shù)據(jù)項的操作異常,其中 A5A(讀偏斜 read skew), A5B(寫偏斜 write skew),可形象化地做如下表示 : (PS: 這里為避免歧義,將 skew譯為偏斜,而非偏序 (一般容易理解為 partial ordering)。 )

【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解

圖 2.

*  各類常見行為模式 (現(xiàn)象 )的關系匯總

論文 [1]中將本節(jié)中提及的序列之間的關系隱含在隔離級別的分析中了,筆者特此將其總結成一張關系圖。 (下圖某些集合關系的細節(jié)有待商榷,但可據(jù)此有宏觀的認識 )

【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解

圖 3.

綜上,已經(jīng)對異?,F(xiàn)象做了一個匯總 : 形式化的表述與直觀上的描述。
現(xiàn)在有了異常現(xiàn)象,我們就看每種隔離級別是如何定義的以及解決了怎樣的異常呢?

(三 ) 如何嚴格地定義隔離級別?

有了 (二 )中的形式化定義,隔離級別就可以被相對嚴謹?shù)亩x了。這里將直接引用論文與書籍中的描述。這里在 (一 )的理解上,稍加修飾 : 隔離級別的定義可以有多種定義方式,但其要表達的根本意思是,如果一個事務系統(tǒng)在運行時能夠規(guī)避某些問題集,那么該系統(tǒng)的事務將具有某種相應的隔離級別,即 隔離級別抽象出 待規(guī)避的最小異?,F(xiàn)象集合。 至于 DBMS的某種隔離級別的實現(xiàn),是否還可能規(guī)避對應級別的最小問題集以外的異常序列,并不做限制

下面我們就來看看論文 [1]中是如何就隔離級別的幾種定義做遞進式的說明的。

1. ANSI-SQL92中定義的 4中隔離級別 (解決 A1-A3中的部分或者全部異常 ):

【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解

表 4. - [1]-table 1

然而,由于 (二 )中表 3.告訴我們 A1-A3對異常的定義并不完備,因此上述 ANSI-SQL隔離級別的定義是不夠完備的。尤其是僅因規(guī)避 A1-A3而得名的 ANOMALY-SERIALIABLE級別并不是真正的 可串行化 (SR)隔離級別,因為并發(fā)事務在滿足可串行化隔離級別的情況下是沒有并發(fā)操作異常發(fā)生的 (理論保證 ),而 ANOMALY-SERIALIABLE級別無法避免 A5A,A5B等異常的發(fā)生。因此 需要將情況擴充得更加完備,具體如下。

2. 基于 P0-P3的隔離級別定義 : (來自論文 [1])

經(jīng)過將 ANSI異?,F(xiàn)象 A1-A3擴充至 P0-P3,得到加強版 ANSI-SQL隔離級別定義 :

【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解

表 5.  - [1]-table 3

以上已經(jīng)將定義進行了將強處理,但是如何實現(xiàn)呢?老爺子 Jim Gray等人還根據(jù)各方資料總結了基于鎖機制的隔離級別定義,這算是一種可實現(xiàn)化角度的定義,具體如下。

3. 基于鎖機制的隔離級別定義 : (來自論文 [1])

【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解

表 6.  - [1]-table 2

這里有一個論文 [1]提及的結論 : Table 3與 Table 2的 4種隔離級別的定義是等價的,也就是說 Locking-based 的 4種隔離級別與 ANSI-SQL加強版定義的 4種隔離級別等價。

Degree-0 << any defined Isolation Level.

ANSI-RU << RU  ==  Locking-RU ==  Degree-1

ANSI-RC << RC  ==  Locking-RC ==  Degree-2

Degree-2 << ANSI-RR << RR  ==  Locking-RR << Degree-3

ANOMALY-SR << SR  ==  Degree-3

注意 : Serializable級別是最強的級別,理論上該級別解決了所有的異常現(xiàn)象。

4. 最終的隔離級別關系圖 (來自論文 [1])

以 2、 3的定義 以及  (二 )中的序列模式關系為基礎,最終我們得到了一張隔離級別關系圖 :

【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解

圖 4. - [1]-Figure 2

最底層表示最弱的隔離級別,最頂層表示最強的隔離級別;而中間顯示有些隔離級別之間并無絕對的強弱關系,因為分別有各自能夠解決而對方不能保證解決的問題,這些分支主要在 RC級別與 SR(Serializable)級別之間;這里需要強調(diào) : 每種 DBMS實現(xiàn)的隔離級別可能會在細節(jié)表現(xiàn)上有所不同,但至少應不弱于 ANSI-SQL標準;而每家的實現(xiàn)又取決于歷史原因以及產(chǎn)品層面希望給用戶怎樣的吸引力,因此在不同數(shù)據(jù)庫產(chǎn)品之間進行切換時,存儲層和應用層都需要充分考慮隔離級別對用戶的影響。

(四 ) 相關問題

Q.  InnoDB  - RR 隔離級別的意義何在?

A. InnoDB中隔離級別的實現(xiàn)手段有 2種,一種是 (行 )鎖機制,一種是在 MVCC機制 (需要與鎖機制結合 )。無論用戶發(fā)起的事務中的 SQL都是基于鎖并發(fā)控制的讀 /寫 SQL,還是也包含了基于 MVCC(無鎖 )的只讀 SQL,執(zhí)行結果都應滿足該事務所處隔離級別的語義。

對于InnoDB-RR隔離級別,一方面,在鎖機制上采用 SS2PL策略 ( Locking Repeatable Read),理論上 (以及實際上 )已經(jīng)達到了 可串行化的隔離級別 ( Locking-Serializable = Degree 3 >> Locking Repeatable Read = ANSI-SQL Phenomenon-based Repeatable Read >> ANSI-SQL Anomaly-based Repeatable Read),已經(jīng)強于加強版 ANSI-SQL RR級別的定義了。另一方面,從現(xiàn)象上來講 InnoDB-RR的鎖機制避免了包括前述的幻讀、讀偏斜、寫偏斜現(xiàn)象,但不僅限于此,而 RC隔離級別并不能解決諸如 A5A(讀偏斜 ),A5B(寫偏斜 )等異常,因此 MySQL內(nèi)部將默認事務隔離級別設定為 RR,還是有重要意義的。

Q. 關于 SI(快照隔離 )級別

A. 論文 [1]中有所描述,是基于 MVCC技術實現(xiàn)的隔離級別,涉及的行為序列屬于 多版本 (Multi-Versioning)行為序列,在理論上需要向 單值 (Single-Valued)行為序列做等價轉(zhuǎn)換才能夠?qū)?SI并入 圖 4.所示的隔離級別體系結構 (去做比較 )。文中涉及很多相關的分析過程,限于篇幅后續(xù)單獨再對基于 MVCC技術的隔離級別做討論。這里僅列舉一些重要的結論 ( 圖 4. ):

Degree-2 == RC << SI << SR = Degree-3

SI >><< RR

Q. P2為何如此包容 (P2包含 A2,P4,A5A,A5B,...)?

A. 一方面, P2實際上抽象了 A2,P4,A5A,A5B等異常模式的共性—— ”先讀后寫 ”;另一方面, ”先讀后寫 ”很多時候意味著后寫的目標數(shù)據(jù)對先讀出的數(shù)據(jù)有依賴,這里可能是同一個數(shù)據(jù)項的依賴,也可能是 2個或者多個數(shù)據(jù)項的依賴,因此會涉及 A5A,A5B等諸多可能破壞關聯(lián)約束的現(xiàn)象。

以上是筆者對事務隔離級別的粗淺理解—— 某種隔離級別定義了需要解決的某些并發(fā)操作問題的 最小 集合,謹為自己釋疑,由于水平有限,理解尚不完備,還有許多相關問題值得學習和討論,歡迎討論指教。

參考文獻 :

[1] “A Critique of ANSI SQL Isolation Levels,” Proc. ACM SIGMOD 95, pp. 1-10, San Jose CA, June 1995, ? ACM

作者:賈春生(基礎架構-數(shù)據(jù)庫開發(fā)組)

  • 現(xiàn)在注冊滴滴云,有機會可得30元無門檻滴滴出行券

  • 新購云服務1月5折 3月4.5折 6月低至4折

  • 滴滴云使者招募,推薦最高返傭50%

網(wǎng)站題目:【DB究談】淺談對數(shù)據(jù)庫隔離級別的理解
路徑分享:http://bm7419.com/article46/gocohg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、服務器托管做網(wǎng)站、自適應網(wǎng)站、微信小程序、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計