1、封鎖粒度是什麼?
封鎖對象的大小稱爲封鎖的粒度
封鎖對象:邏輯單元、物理單元
2、選擇封鎖粒度的原則?
封鎖粒度和系統的併發度、系統的開銷密切相關
- 封鎖的粒度越大 數據庫能夠封鎖的數據單元就越少,併發度就越小,系統開銷也就越小
- 封鎖的粒度越小 數據庫能夠封鎖的數據單元就越多,併發度就越高,系統開銷也就越大
因此封鎖粒度是一把雙刃劍,所以在一個系統當中如果能夠提供多種封鎖粒度以便不同的事務按照自己的需求選擇就比較完美了
這就是所謂的:多粒度封鎖
3、具體如何選擇封鎖粒度呢?
- 需要處理大量元組的用戶事務,以關係爲封鎖單元
- 需要處理多個關係的大量元組的用戶事務,以數據庫爲封鎖單元
- 只是處理少量元組的用戶事務,以元組爲封鎖單元
4、多粒度封鎖
- 以樹形結構來表示多級封鎖粒度
- 根節點是整個數據庫,表示最大的數據粒度
- 葉節點是最小的數據粒度
三級粒度樹 四級粒度樹
5、多粒度封鎖協議
- 允許粒度樹中的每一個節點獨立的被加鎖
- 對一個節點加鎖,意味着這個節點的所有後裔節點也同樣被加上相同類型的鎖
- 因此多粒度封鎖中一個數據對象可能以兩種方式封鎖:顯式封鎖、隱式封鎖
6、顯式封鎖和隱式封鎖
- 顯式封鎖: 直接加到數據對象上的封鎖
- 隱式封鎖:是該數據對象沒有獨立加鎖,是由於其 上級結點加鎖而使該數據對象加上了鎖
- 顯式封鎖和隱式封鎖的效果是一樣的
顯然這種封鎖的效率很低,因此引入了一種新型封鎖-意向鎖
7、意向鎖的目的
- 目的是簡化加鎖時系統的檢查過程,提高了對某個數據對象加鎖時系統的檢查效率
8、意向鎖的類型
- 意向共享鎖(IS鎖)
- 意向排它鎖(IX鎖)
- 共享意向排它鎖(SIX鎖):當我們想讀一個數據對象,並且更新他的後代節點需要加SIX鎖
9、意向鎖的封鎖的相容性
- 要考慮隱式鎖的因素
- 要考慮意向鎖並不是給所有的後代節點都加鎖
- 要考慮不同後代的因素,只要有可能不衝突就可以滿足意向鎖的封鎖請求,如果衝突了,系統會在事務給後代節點加鎖衝突的時候拒絕他的請求
10、鎖的強度
鎖的強度是指他對其它鎖的排斥程度
一個事務在申請封鎖的時候以強鎖代替弱鎖時安全的,反之則不然。
11、具有意向鎖的多粒度封鎖方法的特點
- 申請封鎖應該自上而下
- 釋放封鎖應該自下而上
優點:
12、小結+思考
13、本章總結