网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > DB2教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.教你提高商业智能环境中的DB2查询.
.DB2 Web 服务提供者的安全性(2)(.
.DB2崩溃后用事务日志恢复的原理和.
.通过DB查询的两个数据库间SCN会被.
.快速解决DB2创建存储过程时所遇到.
.选择 IBM DB2数据库的五大理由.
.经验:解决DB2中出现的SQL1032N错.
.带你深入了解用于数据仓库的IBM .
.带你深入了解IBM DB2数据库的备份.
.教你在IBM DB2数据库中进行包的重.
.使用DB2look 重新创建优化器访问.
.DB2 变更管理工具与Rational DA集.
.讲解删除db2admin管理员帐号的具.
.IBM DB2事件监视器及explain pla.
.DB2关联时资料库查询语句基本语法.
.DB2数据库的数据复制技术简单概述.
.IBM DB2 数据复制迁移方法.
.使用DB2look 重新创建优化器访问.
.安装DB2 9数据库需要的内存和磁盘.
.DB2数据库创建存储过程时遇到的错.

DB2数据库的隔离级解读与试验

发表日期:2007-10-27


  基本信息

  摘要:在DB2中,共有四种隔离级:RS,RR,CS,UR.以下对四种隔离级进行一些描述,同时附上个人做试验的结果。隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间。两个应用程序即使执行的相同的操作,也可能由于选择的隔离级的不同而造成加锁的结果不同。

  隔离级解读和试验

  隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间。两个应用程序即使执行的相同的操作,也可能由于选择的隔离级的不同而造成加锁的结果不同。在DB2中,共有四种隔离级:RS,RR,CS,UR.以下对四种隔离级进行一些描述,同时附上个人做试验的结果。

读可靠性(RS-Read Stability)
  如果使用这种隔离级,在一个事务中所有被读取过的行上都会被加上NS锁,直到该事务被提交或回滚,行上的锁才会被释放。这样可以保证在一个事务中即使多次读取同一行,得到的值不会改变。

  但是,如果使用这种隔离级,在一个事务中,如果使用同样的搜索标准重新打开已被处理过的游标,则结果集可能改变。(可能会增加某些行,这些行被称为幻影行(Phantom))。这是因为RS隔离级不能阻止通过插入或更新操作在结果集中加入新行。

  个人笔记:

   根据实际测试情况,RS模式下:查询完毕以后,满足条件的结果集中的记录被锁定,不满足条件的不被锁定。

   可以对不满足条件的记录更新,也可以插入新的记录。其他人可以查询满足已经锁定的记录,但不可以更新。

重复读(RR-Repeat Read)
  如果使用这种隔离级,在一个事务中所有被读取过的行上都会被加上S锁,知道该事务被提交或回滚,行上的锁才会被释放。这样可以保证在一个事务中即使多次读取同一行,得到的值不会改变。

  另外,在同一事务中如果以同样的搜索标准重新打开已被处理过的游标,得到的结果集不会改变。重复读相对于读可靠性而言,加锁的范围更大。

  对于读可靠性,应用程序只对符合要求的所有行加锁,而对于重复读,应用程序将对所有被扫描过的行都加锁。例如,如果一个应用程序对一个表中的 10000行数据进行扫描,最终找到了100条符合搜索条件的结果行。如果该应用程序使用的是读可靠性隔离级,应用程序将只对这符合条件的100行加锁;如果该应用程序使用的是重复读隔离级,应用程序将对被扫描过的10000行都加锁。

  个人笔记

   根据实际测试情况,RR模式下:查询完毕以后,不可以对不满足条件的进行更新,也不可以插入新记录。可能原因是:如果允许别人更新记录或者插入新记录的话,则可能造成原来结果集的破坏,重新读的时候和以前不同。

   select for update with rr/rs 是可以用来实现记录锁。是一种特殊情况。即便是RR,仍然可以对其他记录操作。

游标可靠性(CS-Cursor Stability)
  如果使用这种隔离级,在一个事务中,结果集中只有正在被读取的那一行(游标指向的行)将被加上NS锁,其他未被处理的行上不被加锁。这种隔离级只能保证正在被处理的行的值不会被其他并发的程序所改变。该隔离级是DB2缺省的隔离级。

  个人笔记

  仅仅在游标在该行的时候锁定,这是一种非常弱的隔离状态。

未提交读(UR-Uncommitted Read)
  如果使用这种隔离级,对于只读操作,不加行锁。典型的只读操作包括:

   SELECT语句的结果集只读(比如语句中包括ORDER BY子句);

  定义游标是指明起为FOR FETCH ONLY。

  该隔离级可以改善应用程序的性能,同时可以最大程度的允许并发。但是,应用程序的数据完整性将受到威胁。如果需要读取未提交的数据,该隔离级是唯一选择。

  个人笔记

  读的时候完全不受限制,对于同一行记录的完整性也无法保证。

  总结

  以上我们所提的隔离级的加锁范围和持续时间都是针对于读操作而言的。

  对于更改操作,被修改的行上会被加上X锁,不论使用何种隔离级,X锁直到提交或回滚之后才会被释放。

上一篇:常见数据库系统之比较 - DB2数据库 人气:30921
下一篇:在DB2环境中创建DB2数据库 人气:2755
浏览全部DB2数据库的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐