银行 测试

CS游标稳定性隔离级别,加锁不理解,求指导

question:

测试cs隔离级别
打开两个cmd窗口,
在cmd1窗口中执行
tt表(id int,val varchar(10))
ID          VAL
----------- ----------
          1 aa
          2 bb
          3 nn
          4 mm


C:UsersAdministrator>db2 +c declare c1 cursor for select * from xdgl.tt with c
s

DB20000I  SQL 命令成功完成。
C:UsersAdministrator>db2 +c open c1
DB20000I  SQL 命令成功完成。
C:UsersAdministrator>db2 +c fetch c1
ID          VAL
----------- ----------
          1 aa
  1 条记录已选择。

在cmd2中 get snapshot for locks on kinoa

应用程序句柄                               = 584
应用程序标识                        = *LOCAL.DB2.130110060019
序号                                = 00015
应用程序名                          = db2bp.exe
CONNECT 授权标识                           = ADMINISTRATOR
应用程序状态                        = UOW 正在等待
状态更改时间                        = 未收集
应用程序代码页                             = 1386
挂起的锁定                      = 3
总计等待时间(毫秒)            = 0
锁定列表
锁定名称                       = 0x01000000010000000200602056
锁定属性                       = 0x00000000
发行版标志                     = 0x40000000
锁定计数                       = 1
挂起计数                       = 0
锁定对象名                     = 0
对象类型                       = 内部变化锁定
方式                           = S
锁定名称                       = 0x53514C43324832307F4760B841
锁定属性                       = 0x00000000
发行版标志                     = 0x40000000
锁定计数                       = 1
挂起计数                       = 0
锁定对象名                     = 0
对象类型                       = 内部方案锁定
方式                           = S
锁定名称                       = 0x02000903000000000000000054
锁定属性                       = 0x00000000
发行版标志                     = 0x00000001
锁定计数                       = 1
挂起计数                       = 0
锁定对象名                     = 777
对象类型                       = 表
表空间名                       = USERSPACE1
表模式               = XDGL
表名                 = TT
方式                           = IS

得到锁状况如上所示,
疑问:
1、当前锁定的是 行(  1 ,aa),还是游标中未获取出来的下一行?
2、我在cmd2执行

C:UsersAdministrator>db2 update xdgl.tt set val='1aaa' where id=1
DB20000I  SQL 命令成功完成。
C:UsersAdministrator>db2 update xdgl.tt set val='aaaa' where id=2
DB20000I  SQL 命令成功完成。
均没有问题
,请问不应该是锁定一行吗?为什么别的应用程序还可以操作?
参与6

5 同行回答

yezixingchen yezixingchen 项目经理 杭信数码
:handshaked多谢显示全部
:handshaked多谢 收起
银行 · 2013-01-11
浏览804
huangxin huangxin 其它 河南拓普计算机网络工程有限公司
可以再看看这个显示全部
可以再看看这个 收起
IT分销/经销 · 2013-01-10
浏览755
yezixingchen yezixingchen 项目经理 杭信数码
多谢东焕老师了显示全部
多谢东焕老师了 收起
银行 · 2013-01-10
浏览769
yezixingchen yezixingchen 项目经理 杭信数码
C:\Users\Administrator>db2levelDB21085I  实例 "DB2" 使用 "32" 位和 DB2 代码发行版 "SQL09070",级别标识为"08010107"。参考标记为 "DB2 v9.7.0.441"、"s090521" 和 "NT3297",修订包为 "0"。产品使用 DB2 副本名 "DB2COPY1" 安装在 "E:\PROGRA~1\IBM\SQLLIB"...显示全部
C:\Users\Administrator>db2level
DB21085I  实例 "DB2" 使用 "32" 位和 DB2 代码发行版 "SQL09070",级别标识为
"08010107"。
参考标记为 "DB2 v9.7.0.441"、"s090521" 和 "NT3297",修订包为 "0"。
产品使用 DB2 副本名 "DB2COPY1" 安装在 "E:\PROGRA~1\IBM\SQLLIB" 中。 收起
银行 · 2013-01-10
浏览793
张东焕 张东焕 技术总监 IBM官方授权讲师
CS在9.7中默认是CC,currently commited,这是CS的变种,为适应Oracle迁移过来的应用,这一行在没有update时,其他事务可以查询。这一行read的时候,别的行可以update。显示全部
CS在9.7中默认是CC,currently commited,这是CS的变种,为适应Oracle迁移过来的应用,这一行在没有update时,其他事务可以查询。这一行read的时候,别的行可以update。

db2-cs-cc.png

收起
IT咨询服务 · 2013-01-10
浏览785

提问者

yezixingchen
项目经理 杭信数码
评论55

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2013-01-10
  • 关注会员:1 人
  • 问题浏览:6398
  • 最近回答:2013-01-11
  • X社区推广