- 论坛徽章:
- 0
|
分享下自己以前关于记录锁的总结
记录锁分*read和*update两种,所以我给他分成以下3种情况:
1 只读I,产生*read的情况
在事务控制块内,隔离级别*all/*cs
*all:commit/rolback前所有读过的都加*read
*cs:只对当前读取得记录加*read
2更新读取U ,产生*update的情况
2.1不在事务控制块内,只对当前读取得记录加*update
2.2在事务控制块内
2.2.1*all:commit/rolback前所有读过的都加*update
2.2.2*cs/*chg:commit/rolback前所有改过的和当前正在读取得都加*update
3只读I,不产生记录锁
不在事务控制块内
锁的限制
种类 允许的情况
1 1,2(同一job内),3
2 1(同一job内),3
3 1,2,3
解释下[1 1,2(同一job内),3 ]
当某条记录被加了*read锁,那么它允许其他的*read锁,它允许同一job内的*update锁,当然还有不会产生记录锁的只读的情况
[2 1(同一job内),3],[3 1,2,3]同样类似的意思。
注意:共享odp不会产生互锁,在共享odp的时候,没有锁的限制。
ng的例子
1 jaba *read
2 jobb *read
3 jobb *update
看2和3满足,但是看1和3不满足,所以第三步会失败。
我整理的东西是在400上自己测试的总结,没有看过资料,肯定会有不全面的地方,可能会有错误的地方,
希望大家多指正。
|
|