- 論壇徽章:
- 0
|
分享下自己以前關(guān)于記錄鎖的總結(jié)
記錄鎖分*read和*update兩種,所以我給他分成以下3種情況:
1 只讀I,產(chǎn)生*read的情況
在事務(wù)控制塊內(nèi),隔離級別*all/*cs
*all:commit/rolback前所有讀過的都加*read
*cs:只對當(dāng)前讀取得記錄加*read
2更新讀取U ,產(chǎn)生*update的情況
2.1不在事務(wù)控制塊內(nèi),只對當(dāng)前讀取得記錄加*update
2.2在事務(wù)控制塊內(nèi)
2.2.1*all:commit/rolback前所有讀過的都加*update
2.2.2*cs/*chg:commit/rolback前所有改過的和當(dāng)前正在讀取得都加*update
3只讀I,不產(chǎn)生記錄鎖
不在事務(wù)控制塊內(nèi)
鎖的限制
種類 允許的情況
1 1,2(同一job內(nèi)),3
2 1(同一job內(nèi)),3
3 1,2,3
解釋下[1 1,2(同一job內(nèi)),3 ]
當(dāng)某條記錄被加了*read鎖,那么它允許其他的*read鎖,它允許同一job內(nèi)的*update鎖,當(dāng)然還有不會(huì)產(chǎn)生記錄鎖的只讀的情況
[2 1(同一job內(nèi)),3],[3 1,2,3]同樣類似的意思。
注意:共享odp不會(huì)產(chǎn)生互鎖,在共享odp的時(shí)候,沒有鎖的限制。
ng的例子
1 jaba *read
2 jobb *read
3 jobb *update
看2和3滿足,但是看1和3不滿足,所以第三步會(huì)失敗。
我整理的東西是在400上自己測試的總結(jié),沒有看過資料,肯定會(huì)有不全面的地方,可能會(huì)有錯(cuò)誤的地方,
希望大家多指正。
|
|