劉娜
[摘要]數(shù)據(jù)庫技術(shù)是使用計算機管理數(shù)據(jù)的一門新的科學(xué)技術(shù)。在科技、文化、經(jīng)濟和軍事等各個領(lǐng)域,我們會遇到大量的數(shù)據(jù),這些數(shù)據(jù)不但復(fù)雜,而且數(shù)據(jù)量大,因此如何科學(xué)地管理數(shù)據(jù)是一個極為重要的課題,特別是在多個對象同時訪問同一數(shù)據(jù)時,有可能帶來一系列的數(shù)據(jù)錯誤,本文討論的是在數(shù)據(jù)庫并發(fā)操作過程中采用的并發(fā)控制技術(shù)。
[關(guān)鍵詞]SQL Server;事務(wù);并發(fā)控制;ACID特性
數(shù)據(jù)庫的重要特征是可以為多個用戶提供數(shù)據(jù)共享,當多用戶在同一時刻訪問同一數(shù)據(jù)的時候,數(shù)據(jù)庫管理系統(tǒng)(簡稱DBMS)必須提供并發(fā)控制機制來協(xié)調(diào)并發(fā)用戶的并發(fā)操作帶來的問題,以保證并發(fā)事務(wù)的隔離性,從而達到數(shù)據(jù)庫的數(shù)據(jù)一致性和完整性。
事務(wù)和鎖是兩個緊密聯(lián)系的概念。事務(wù)使用鎖,防止其他用戶修改另外一個還沒有完成的事務(wù)中的數(shù)據(jù)。在關(guān)系數(shù)據(jù)庫中有多種鎖,允許事務(wù)鎖定不同的資源,鎖就是保護指定的資源不被其他事務(wù)操作,鎖是保證并發(fā)控制的手段,該過程中鎖定的方式稱為并發(fā)控制機制。
一、事務(wù)的概念及特性
事務(wù)是數(shù)據(jù)庫的邏輯工作單位,是用戶定義的一組操作序列,這些操作要么全做,要么全不做。例如轉(zhuǎn)賬交易事務(wù),包含資金轉(zhuǎn)出和轉(zhuǎn)入兩個操作,只有當這兩個操作都完成,轉(zhuǎn)賬才能成功,或者兩個操作都不做,也不會影響原始資金,假設(shè)只完成轉(zhuǎn)出一個操作,就會造成資金的丟失。事務(wù)具有四個特性原子性(Atomicity)、一致性(Consistency)、隔離性(Isotation)和持續(xù)性(Durability),這四個特性也簡稱為ACID特性。
(一)原子性(Atomic)
事務(wù)是一個不可分割的工作單位,事務(wù)必須是原子工作單元,對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。通常與某個事務(wù)關(guān)聯(lián)的操作具有共同的目標,并且是相互依賴的。如果系統(tǒng)只執(zhí)行這些操作的一個子集,則可能會破壞事務(wù)的總體目標,原子性消除了系統(tǒng)處理操作子集的可能性。
(二)一致性(Consistency)
一致性是指當事務(wù)完成時,必須使所有數(shù)據(jù)都具有一致的狀態(tài)。在關(guān)系型數(shù)據(jù)庫中,所有的規(guī)則必須應(yīng)用到事務(wù)的修改上,以便維護所有數(shù)據(jù)的完整性。所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu),在事務(wù)結(jié)束之后,必須保證正確。事務(wù)執(zhí)行的結(jié)果必須使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。
(三)隔離性(Isolation)
事務(wù)的執(zhí)行不受其他事務(wù)的干擾,事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對其他并發(fā)事務(wù)是隔離的.就是指并行事務(wù)的修改必須與其他并行事務(wù)的修改相互獨立。一個事務(wù)看到的數(shù)據(jù)要么是另外一個事務(wù)修改這些事務(wù)之前的狀態(tài),要么是第二個事務(wù)已經(jīng)修改完成的數(shù)據(jù),但是這個事務(wù)不能看到正在修改的數(shù)據(jù),這種特征也稱為串行性。
(四)持久性(Durability)
事務(wù)一旦提交,對數(shù)據(jù)庫中數(shù)據(jù)的改變是永久性的。持久性是指當一個事務(wù)完成之后,它的影響永久性地產(chǎn)生在系統(tǒng)中,也就是這種修改寫到了數(shù)據(jù)庫中。事務(wù)完成之后,它對于系統(tǒng)的影響是永久性的,該修改即使出現(xiàn)致命的系統(tǒng)故障也將一直保持。
二、事務(wù)的并發(fā)操作帶來的問題
為了充分利用數(shù)據(jù)庫資源,發(fā)揮數(shù)據(jù)庫共享資源的特點,允許多個用戶并行地存取數(shù)據(jù)庫,即同一時刻多個事務(wù)操作同一數(shù)據(jù)對象,稱為并發(fā)操作。事物的并發(fā)操作帶來的數(shù)據(jù)不一致性主要包括以下三類:
(一)丟失修改
即事務(wù)1和事務(wù)2同時讀取同一數(shù)據(jù),事務(wù)1更新了該數(shù)據(jù)后,事務(wù)2也修改該數(shù)據(jù)并提交,這時事務(wù)1的修改就會被事務(wù)2修改的值覆蓋,這將導(dǎo)致數(shù)據(jù)丟失,稱為丟失修改。
(二)不可重復(fù)讀
即事務(wù)1讀取某一數(shù)據(jù)后,事務(wù)2對其進行了修改,當事務(wù)1再次讀取數(shù)據(jù)時,得到的數(shù)據(jù)與第一次讀取的值不一樣,稱為不可重復(fù)讀。
(三)讀“臟”數(shù)據(jù)
即事務(wù)1讀取并修改某一數(shù)據(jù)后將結(jié)果寫回了磁盤,事務(wù)2讀取同一數(shù)據(jù)后,事務(wù)1由于某種原因撤銷并將修改過的數(shù)據(jù)恢復(fù)原值,這時事務(wù)2讀取的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,稱為讀“臟”數(shù)據(jù)。
三、數(shù)據(jù)庫并發(fā)控制技術(shù)
并發(fā)控制就是采用正確的方法調(diào)度并發(fā)操作,對數(shù)據(jù)訪問排隊,避免造成數(shù)據(jù)的不一致性,使一個用戶事務(wù)的執(zhí)行不受其他事務(wù)的干擾,并發(fā)控制的目的是保證一個用戶的工作不會對另一個用戶的工作產(chǎn)生不合理的影響。在某些情況下,這些措施保證了當用戶和其他用戶一起操作時,所得的結(jié)果和他單獨操作時的結(jié)果是一樣的。在某些情況下,這表示用戶的工作按預(yù)定的方式受其他用戶的影響。
結(jié)語
數(shù)據(jù)庫的并發(fā)操作將會造成一系列的數(shù)據(jù)出錯,本文詳細分析了并發(fā)操作帶來的三類數(shù)據(jù)不一致性,分別是丟失修改、不可重復(fù)讀和讀“臟”數(shù)據(jù),避免數(shù)據(jù)不一致性的方法和技術(shù)就是并發(fā)控制。全文通過對事務(wù)的描述,事務(wù)的并發(fā)操作有可能帶來的問題,提出相應(yīng)的并發(fā)控制策略,為管理維護數(shù)據(jù)提供了控制機制保障。
參考文獻:
[1]陳俊伽,王韜.關(guān)系數(shù)據(jù)庫并發(fā)控制機制研究[J].科學(xué)技術(shù)與工程,2007,7 (18):4635-4637+4643.
[2]毛應(yīng)爽,鄭永春.常用關(guān)系數(shù)據(jù)庫并發(fā)控制的比較研究[J].制造業(yè)自動化,2010 (13):78-80.
[3]陳秋月,張劍妹.關(guān)系數(shù)據(jù)庫的并發(fā)控制與實現(xiàn)途徑[J].長治學(xué)院學(xué)報,2012,29 (5):30-33.