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