徐愛蕓



摘要:為了充分利用系統(tǒng)資源,發(fā)揮共享資源的特點,數(shù)據(jù)庫系統(tǒng)允許執(zhí)行多個并發(fā)事務(wù),在任何給定的時刻有可達數(shù)百個正在執(zhí)行的卻只部分完成的事務(wù),這是由用戶來選擇一個可以保證應(yīng)用程序正確執(zhí)行并且能夠使并發(fā)度最大的隔離級別的執(zhí)行選項。
關(guān)鍵詞:事務(wù);隔離級別;并發(fā)執(zhí)行;并發(fā)控制
數(shù)據(jù)庫系統(tǒng)的最大特點是共享,允許多個用戶或多種應(yīng)用相互覆蓋地共享數(shù)據(jù)集合。在互聯(lián)網(wǎng)時代,成千上萬的不同地點的計算機每秒執(zhí)行上百的操作,同一時間有多個操作影響同一數(shù)據(jù),即存在并發(fā)操作,如果不加以控制,可能帶來數(shù)據(jù)不一致問題:更新丟失;不可重復(fù)讀;讀臟數(shù)據(jù)。為保證并發(fā)事務(wù)執(zhí)行時數(shù)據(jù)的正確性和一致性,對并發(fā)事務(wù)要進行控制。
1 事務(wù)管理器
負責事務(wù)的正確執(zhí)行是事務(wù)管理器,它接受來自應(yīng)用的命令,包括BEGIN TRANSACATION、COMMIT、ROLLBACK,而將事務(wù)操作傳給日志管理器。并發(fā)控制管理器對并發(fā)執(zhí)行的事務(wù)進行控制,通過加鎖和封鎖協(xié)議保證并發(fā)執(zhí)行的事務(wù)保持隔離性。其流程如圖1所示。
2 事務(wù)隔離級別
在實際開發(fā)中,直接操作數(shù)據(jù)庫中各種鎖的幾率相對比較少,更多的是利用數(shù)據(jù)庫提供的四個隔離級別:未提交讀、已提交讀、可重復(fù)讀、可序列化,用隔離封裝鎖。隔離級別從上到下依次增加,級別越低,引起的問題也就比較多,比如臟讀、丟失更新等;隔離級別越高,需要管理更多的鎖,無法并行處理,性能方面又受損。在實際的系統(tǒng)中只需要根據(jù)業(yè)務(wù)需求選擇一種當適合的隔離級別。一種隔離級別,就有一套利用鎖的方案,如此設(shè)計的目的就是為了平衡性能和功能。
2.1 讀未提交(Read Uncommitted)
“讀未提交”提供了事務(wù)之間最小限度的隔離,事務(wù)沒有獲得讀鎖也可以執(zhí)行該操作,事務(wù)可以讀取其它事務(wù)已經(jīng)在其上加過寫鎖的數(shù)據(jù),即允許臟讀。其實現(xiàn)的機制通過實驗驗證,過程如表1所示。
未提交讀不允許更新丟失,如果一個事務(wù)已經(jīng)開始寫數(shù)據(jù),則另外一個數(shù)據(jù)則不允許同時進行寫操作,該隔離級別可以通過排它鎖實現(xiàn)。
2.2 讀已提交(Read Committed)
“讀已提交”只能讀提交的數(shù)據(jù),不允許臟讀,但允許不可重復(fù)讀。這可以通過共享鎖和排它鎖實現(xiàn)。讀取數(shù)據(jù)的事務(wù)允許其它事務(wù)繼續(xù)訪問該行數(shù)據(jù),但是未提交的寫事務(wù)將會禁止其他事務(wù)訪問該行。其實現(xiàn)的機制通過實驗驗證,過程如表2所示。
2.3 可重復(fù)讀(Repeatable Read)
“可重復(fù)讀”通過共享鎖和排它鎖實現(xiàn),讀取數(shù)據(jù)的事務(wù)將會禁止寫事務(wù)(但允許讀事務(wù)),寫事務(wù)則禁止任何其它事務(wù),禁止不可重復(fù)讀和臟讀。其實現(xiàn)的機制通過實驗驗證,過程如表3所示。
2.4 序列化(Serializable)
“序列化”提供嚴格的事務(wù)隔離,它要求事務(wù)序列化執(zhí)行,事務(wù)只能一個接著一個地執(zhí)行,但不能并發(fā)執(zhí)行。如果僅僅通過“行級鎖”是無法實現(xiàn)事務(wù)序列化的,必須通過其他機制保證新插入的數(shù)據(jù)不會被剛執(zhí)行查詢操作的事務(wù)訪問到。
3 結(jié)語
隔離級別越高,越能保證數(shù)據(jù)的完整性和一致性,但是對并發(fā)性能的影響也越大。對于多數(shù)應(yīng)用程序,可以優(yōu)先考慮把數(shù)據(jù)庫系統(tǒng)的隔離級別設(shè)為Read Committed,它能夠避免讀臟數(shù)據(jù),而且具有較好的并發(fā)性能。盡管它會導(dǎo)致不可重復(fù)讀、虛讀這些并發(fā)問題,在可能出現(xiàn)這類問題的個別場合,可以由應(yīng)用程序采用悲觀鎖或樂觀鎖來控制。
參考文獻:
[1] 送金玉,陳萍,陳剛.數(shù)據(jù)庫原理與應(yīng)用(第2版)[M].清華大學出版社,2011(06).
[2] 尹為民,數(shù)據(jù)庫原理與技術(shù)(第2版)[M].科學出版社,2010(01).
(作者單位:江漢大學數(shù)學與計算機科學學院)