关于DB2隔离级解读和试验的个人资料

数据库
本文主要向你介绍的是DB2隔离级解读和试验,以下的文章就是对DB2隔离级解读和试验相关内容的描述,希望会给你带来一些帮助在此方面。

此文章主要讲述的是DB2隔离级解读和试验,前两天我在相关网站看见DB2隔离级解读和试验的资料,觉得挺好,就拿出来供大家分享,你如果对其有兴趣的话你就可以点击以下的文章进行观看了。

我们大家都知道在DB2数据库中,其一共有4种隔离级即,RS,RR,CS,UR.以下的文章主要是对这4种隔离级进行一些描述,同时附上个人做试验的结果。隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间。

 

基本信息

 

摘要:在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隔离级解读与试验的介绍,望你能有所收获。

【编辑推荐】

  1. DB2建立数据库分区要用的命令有哪些?
  2. DB2 9.5的数据库内存保护,轻松掌握!
  3. DB2强制优化器的使用“窍门”不得不看
  4. DB2快照函数如何正确理解?
  5. 使用重定向恢复DB2数据库的操作技巧是什么?

 

责任编辑:佚名 来源: 博客园
相关推荐

2010-07-29 10:30:41

DB2隔离级

2010-07-30 14:07:18

DB2隔离级

2010-09-30 16:41:36

DB2隔离级别

2010-08-26 10:13:52

DB2java连接

2010-11-03 10:35:45

DB2存储过程

2010-09-30 16:21:40

DB2隔离级别

2010-09-01 11:17:29

DB2备份

2011-07-21 09:53:37

IBMDB2

2010-09-30 16:35:34

DB2隔离级别

2013-09-26 14:47:33

DB2 BLU

2010-08-05 09:14:29

DB2隔离级别

2010-09-07 08:35:40

DB2常用函数

2009-01-19 18:18:23

2010-11-03 16:25:51

DB2列函数

2010-08-17 10:06:25

IBM DB2的数据复

2010-08-26 11:37:38

DB2命令

2010-11-03 15:49:32

DB2删除表

2012-12-07 10:19:56

IBMdW

2011-03-14 17:51:04

IBMDB2数据库

2018-09-29 14:50:19

点赞
收藏

51CTO技术栈公众号