資料庫並發事務控制 一:綜述,資料庫並發事務綜述

來源:互聯網
上載者:User

資料庫並發事務控制 一:綜述,資料庫並發事務綜述
並發控制是DBMS的關鍵技術

對資料庫的操作都是在事務中進行的。
事務是指一組相互依賴的操作行為。事務中的操作是不可分割的工作單元,由一組在商務邏輯上相互依賴的SQL語句組成,有ACID特徵。
    Atomic(原子性):事務中包含的操作被看做一個邏輯單元,這個邏輯單元中的操作要麼全部成功,要麼全部失敗。
    Consistency(一致性):只有合法的資料可以被寫入資料庫,否則事務應該將其復原到最初狀態。
    Isolation(隔離性):事務允許多個使用者對同一個資料進行並發訪問,而不破壞資料的正確性和完整性。同時,並行事務的修改必須與其他並行事務的修改相互獨立。
    Durability(持久性):事務結束後,交易處理的結果必須能夠得到固化。

資料庫中有多個事務同時存在,就是事務並發,此時就不能保證事務隔離性,SQL-92定義了交易隔離等級,描述了給定事務的行為對其它並發執行事務的暴露程度,或者說是一個事務必須與其它事務進行隔離的程度。隔離等級由低到高為:
Read Uncommitted,Read Committed,Repeatable Read, Serializable
隔離等級越高,越能保證資料的完整性和一致性,但對並發效能的影響也越大。

並發事務操作相同的資料時會出現衝突,不能完全保證資料的完整性和一致性,此時可能會出現以下問題:
    Lost update(第一類丟失更新):撤銷一個事務時,把其他事務已提交的更新資料覆蓋。
    Dirty Reads(髒讀):一個事務讀到另一事務未提交的更新資料。
    Phantom Reads(虛讀):一個事務讀到另一事務已提交的新插入的資料。
    Non-repeatable Reads(不可重複讀取):一個事務讀到另一事務已提交的更新資料。
    Second lost updates problem(第二類丟失更新):這是不可重複讀取中的特例,一個事務覆蓋另一事務已提交的更新資料。

交易隔離等級和可能出現的問題


保證並發事務準確性的關鍵是讓衝突的相關事務調度可序列化。理論上,某一事務執行時禁止其他事務執行的調度策略一定是可序列化的調度,這是最簡單的調度策略,但實際上是不可行的,因為它使使用者不能充分共用資料庫資源。目前DBMS普遍採用封鎖方法來保證事務正確性;即保證並行操作調度的可串列性。除此之外還有其他一些方法,如時標方法、樂觀方法等。

封閉式並行存取控制: 鎖定系統阻止使用者以影響其它使用者的方式修改資料。如果使用者執行的操作導致應用了某個鎖,則直到這個鎖的所有者釋放該鎖,其它使用者才能執行與該鎖衝突的操作。該方法主要用在資料爭奪激烈的環境中,以及出現並發衝突時用鎖保護資料的成本比復原事務的成本低的環境中,因此稱該方法為封閉式並行存取控制。

開放式並行存取控制: 在開放式並行存取控制中,使用者讀資料時不鎖定資料。在執行更新時,系統進行檢查,查看另一個使用者讀過資料後是否更改了資料。如果另一個使用者更新了資料,將產生一個錯誤。一般情況下,接收錯誤資訊的使用者將復原事務並重新開始。該方法主要用在資料爭奪少的環境內,以及偶爾復原事務的成本超過讀資料時鎖定資料的成本的環境內,因此稱該方法為開放式並行存取控制。

時標並發控制: 時標和封鎖技術之間的基本區別是封鎖是使一組事務的並發執行(即交叉執行)同步,使用它等價於這些事務的某一串列操作;時標法也是使用一組事務的交叉執行同步,但是使它等價於這些事務的一個特定的串列執行,即由時標的時序所確定的一個執行。如果發生衝突,是通過撤銷並重新啟動一個事務解決的。事務重新啟動,則賦予新的時標。

單純加鎖協議解決並發控制問題會有讀寫衝突和寫寫衝突,對並發事務效能影響較大。因此實踐中postgresql,mysql innodb,oracle,sql server(可設定,預設關閉),informix等資料庫還使用了多版本並發控制(MVCC),MVCC可以避免讀寫衝突,這樣使用鎖搞定寫寫衝突的相關事務序列化操作就可以了。

後續節繼續具體資料庫的鎖機制和實現MVCC的情況。




-----------------

轉載請著明出處:
blog.csdn.net/beiigang



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.