資料庫併發

2022-01-12 07:39:07 字數 1305 閱讀 9623

資料庫併發定義:

乙個處理機處理乙個事務,系統允許多個處理機處理多個事務,稱為併發

併發引起的影響:

1.修改丟失:事務1和事務2同時操作某條資料,比如機場共有機票16張,事務1賣出一張後修改為15,同時事務2也賣出1張,修改為15,最後資料庫中票量為15,實際只剩14個座位

2.不可重複讀:事務1第一次讀取資料a,假如100,然後事務2修改a為200,事務1第二次讀則資料為200

3.髒資料:事務2將a從100改為200,然後事務1讀取a,事務2由於修改錯誤回滾,那麼事務1讀的資料就是髒資料

處理併發影響的技術--加鎖:

排他鎖(寫鎖):事務1對資料a加鎖,只有事務1能對a讀寫,其他的事務不能對a加鎖,直到事務1釋放鎖,稱為x鎖

共享鎖(寫鎖):s鎖,事務1對資料啊加鎖,只能對資料進行讀操作,其他事務只能對a加s鎖,不能加x鎖

加鎖解決併發的問題:

1.事務1對資料加x鎖,等事務釋放鎖後事務2才能對資料加鎖

2.事務1對資料加s鎖,直到事務1釋放鎖後,事務2才能對資料加x鎖

3.事務2對資料加x鎖,等事務2釋放鎖後事務1才能加s鎖

加鎖引起的問題:

活鎖:事務1對a加鎖,然後事務2請求對a加鎖,這時事務3也請求對a加鎖,等1釋放鎖,系統會先處理事務3的請求,這時事務4請求對a加鎖,迴圈這樣,事務2請求會一直處理不了

解決:採取先來先處理的方式

死鎖:事務1對a加鎖,事務2對b加鎖,事務1處理過程中請求對b加鎖,處理完等待事務2釋放鎖,而事務2處理過程中對a請求加鎖,處理完等待事務1釋放,兩者都無法釋放。

解決:破壞死鎖或者允許死鎖,定期檢查。1.一次性封鎖所有資料2.順序封鎖,所有事務按這個順序封鎖

死鎖診斷方法有:超時法(可能導致死鎖發生無法處理),等待圖發(比較負責,需要對系統深入了解)

可序列性:

按某一次序序列的執行事務時的結果一致

事務1:讀b;a=b+1;寫a

事務2:讀a;b=a+1;寫b

兩段鎖

事務分兩個階段對資料項加鎖

1.執行前申**鎖

2.執行後不能再申請和獲取任何鎖

封鎖的粒度

封鎖物件的大小。

多粒度封鎖-多粒度數--資料結構樹

意向鎖:向資料項的上下節點加鎖

資料庫併發控制

資料庫併發控制 1 在資料庫中為什麼要併發控制?答 資料庫是共享資源,通常有許多個事務同時在執行。當多個事務併發地訪問資料庫時就會產生同時讀取和 或修改同一資料的情況。若對併發操作不加控制就可能會訪問和儲存不正確的資料,破壞資料庫的一致性。所以資料庫管理系統必須提供併發控制機制。2 併發操作可能會產...

資料庫併發事務

比如有乙個方法a,在a的內部有兩次同樣的select查詢,但是在兩次select之間方法b對資料庫進行了修改,那麼查詢到的a兩次查詢到的內容是否一致呢,這其實就是資料庫的 不可重複讀 幻讀 問題 這裡用spring hibernate mysql實驗,如果方法a不在事務環境下執行,那麼查詢到的兩次結...

資料庫併發控制

acid,是指在可靠資料庫管理系統 dbms 中,事務 transaction 所應該具有的四個特性 a 原子性 atomicity 事務是乙個或多個行為 在一起組成乙個單獨的工作單元,事務中的動作要不都發生,要不都不發生.c 一致性 consistent 即在事務開始之前和結束之後,資料庫的完整性...