1. 程式人生 > >資料庫知識總結

資料庫知識總結

1、事務的四大特徵:原子性、一致性、隔離性、永續性。

原子性:事務要麼成功,要麼失敗(基礎)(在序列事務下,只要保證原子性就一定能保證一致性)

一致性:所有事務對同一資料讀取結果保持一致(根本)(只有滿足一致性,事務執行結果才是正確的)

隔離性:一個事務在修改操作被提交之前,對其他事務不可見(手段)(在並行事務中,還需要保證隔離性)

永續性:一旦事務提交,則其所做的修改將永久儲存到資料庫中(目的)

2、併發一致性問題:

丟失修改:T1、T2兩個事務對資料庫進行修改,T1先修改,T2再修改,T2的修改會覆蓋T1的修改。

讀髒資料:T1進行修改,T2進行讀取,如果T1事務撤銷了此次修改那麼資料庫資料恢復原值,那麼T2讀取的就是髒資料。

不可重複讀:T1讀取資料,T2再進行修改,那麼T1讀取的資料為更新前的資料,造成結果不一致。

幻影讀:T1讀取了某段範圍資料,T2在此段範圍內插入了新資料,T1再進行讀取和第一次結果不一致。(跟不可重複讀一致)

注:併發不一致性問題主要是破壞了事務的隔離性,解決辦法就是通過併發控制來保證隔離性,資料庫管理系統提供了事務的隔離級別。

3、封鎖(為了解決這些併發操作帶來的問題,需要引入併發控制。主要方法是封鎖技術)

封鎖粒度:封鎖物件的大小稱為封鎖粒度。

封鎖粒度與系統的併發度和併發控制的開銷密切相關。因此,選擇封鎖粒度要遵循一定的原則:

儘量只鎖定需要修改的那部分資料,而不是所有的資源。鎖定的資料量越少,發生鎖爭用的可能就越小,系統的併發程度就越高但是系統開銷也就越大(因為封鎖粒度小,資料庫所能夠封鎖的資料單元就越多,併發程度就越高,但是加鎖需要消耗資源,鎖的各種操作(包括獲取鎖、釋放鎖、以及檢查鎖狀態)都會增加系統開銷,所以系統開銷就越大)

封鎖技術分為兩種,一種是排他型鎖(X鎖、寫鎖),另一種是共享型鎖(S鎖、讀鎖)。

排他鎖:若事務T對資料物件A加上X鎖,則只允許T讀取和修改A,其他事務都不能再對A加任何型別的鎖。直到T釋放A上的鎖。可見X鎖只允許一個事務獨鎖某個資料,具有排他性。(加了X鎖就能讀取更新,並且其他事務不能加)

共享鎖:若事務T對資料物件A加上S鎖,則只允許T讀取A,但不能修改A,其他事務只能再對A加上S鎖(不能加X鎖),這就保證了其他事務可以讀A。(允許併發讀,但不允許修改。)