免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2523 | 回复: 0
打印 上一主题 下一主题

分享db2隔离性理解(原创) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-15 16:40 |只看该作者 |倒序浏览
这里只是针对CS这种隔离级别为例进行分析,对于其它的RS,RR,UR同理,并且对于锁的兼容性可以参考db2 reference.

       对于CS 模式隔离级别情况下,不能读到脏数据,但不能够保证重复读和出现幻影行的现象。下面通过锁的原理来具体分析一下DB2是怎样实现不读到脏数据的。
1)        在CS的隔离级别下:对于只读操作和模糊读操作是(IS/NS)锁(对于意图锁都是表级别的,如:IS ,SIX,IX)。现在以一个作业A的查询、插入、删除、更新为例,而另外一个作业B在执行查询。
2)        当A执行只读查询时或更新查询时,对表加IS锁和IX锁,扫描的行加
NS锁和U锁(NS锁表示应用程序本身和其他应用程序可读,但不能够更改,RS,CS模式下用S锁替代,U锁其他应用程序只能读,不能够进行更改) 。
而B作业已做了更改删除(都是IX/X锁),插入操作(IX/W)
    对于表锁而言,IX只与IS , IN 兼容所以只能是对A作业表的只读查询。对于行来说,B更改时加了X锁,所以只有IN可以兼容,所以只有为提交读的作业可见。所以A看不见B的更改。那么B加了W(弱排它锁),只与NW,IN锁兼容所以对于只读的S锁不兼容所以看不见该记录。但是如果作业A在不加键字的情况下扫描会等待B对该行释放,使用谓词的情况也会如此。若以RID方式则会返回数据。
       注意: CS模式下,锁住当前行为X,扫描为U,然后释放该行锁。表锁不释放。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP