再次请教一道730的题关于Sequence的。。

http://www.db2china.net/club/viewthread.php?tid=6208

这道题 我觉得应该是 A 。20

1.JPG (32.04 KB)

下载次数:14

2009-11-30 06:24

 

再次请教一道730的题关于Sequence的。。_第1张图片

本主题由 hchao 于 2009-12-29 16:49 分类
收藏 分享

 

user 1 使用的值 5,10,15,20,25

user2 使用的值 30,35,40,45,50

user3 nextval 55

由于使用cache(提高性能)的缘故, seq会产生gap(间隙)
>>弱水三千, 你就取我一瓢吧<<

http://www.db2china.net/?1167
http://blog.sina.com.cn/ObscureWings

TOP

温馨提示:请勿用多线程下载,建议右键另存形式保存
我还是不大明白。,,
为什么
user 1 使用的值 5,10,15,20,25
我看不懂,
…………for myseq into conlhvar
是什么意思???
  Thanks in Advance!!!

TOP

主要是cache的问题。此处cache为5,所以对序列操作时会先取5个值存到缓存中,用完再取。所以user1会从5开始取5个数,即5,10,15,20,25。user2相同,user3也是。
真诚面对人这短暂的一生
活不出精彩,也要活出个精神来!

TOP

温馨提示:请勿用多线程下载,建议右键另存形式保存
晓得了!!哈哈!原来如此啊!

TOP

不对。。我测试的。
db2 => create table t1 (id int)
DB20000I  SQL 命令成功完成。
db2 => create sequence myseq start with 5 increment by 5 cache 5
DB20000I  SQL 命令成功完成。
db2 => insert into t1 values(next value for myseq)
DB20000I  SQL 命令成功完成。
db2 => insert into t1 values(next value for myseq)
DB20000I  SQL 命令成功完成。
db2 => select * from t1

ID
-----------
          5
         10

  2 条记录已选择。
第二个连接(再开一个db2cmd)
db2 => connect to mysec

   数据库连接信息

数据库服务器         = DB2/NT 9.7.0
SQL 授权标识         = ADMINIST...
本地数据库别名       = MYSEC

db2 => insert into t1 values(next value for myseq)
DB20000I  SQL 命令成功完成。
db2 => select * from t1

ID
-----------
          5
         10
         15

  3 条记录已选择。
第三个连接(同上)
db2 => insert into t1 values (next value for myseq)
DB20000I  SQL 命令成功完成。
db2 => select * from t1

ID
-----------
          5
         10
         15
         20

  4 条记录已选择。
最后查询结果
db2 => select next value for myseq from  sysibm.sysdummy1

1
-----------
         25

  1 条记录已选择。

db2 =>

TOP

温馨提示:请勿用多线程下载,建议右键另存形式保存
原帖由 xutao1983.c 于 2009-12-4 17:06 发表
不对。。我测试的。
db2 => create table t1 (id int)
DB20000I  SQL 命令成功完成。
db2 => create sequence myseq start with 5 increment by 5 cache 5
DB20000I  SQL 命令成功完成。
db2 => insert into t1 valu ...


试验结果是正确的,再次读了一下在线文档 - Cache
Specifies the maximum number of sequence values that are preallocated and kept in memory. Preallocating and storing values in the cache reduces synchronous I/O to the log when values are generated for the sequence.
In the event of a system failure, all cached sequence values that have not been used in committed statements are lost (that is, they will never be used).
文档并没有说Sequence Cache是与connection/session有关的,所以应该是全局的,另外只提到system failure可能会产生GAP。
出题人好像是把DB2 z/OS里的概念套用到DB2 LUW里了,
http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.dshare/db2z_cacheoptcreatesequence.htm

TOP

楼上的。我建了多个用户。
         以不同用户的身份用不同连接,使用同一个sequence仍然得到了 20的结果

TOP

温馨提示:请勿用多线程下载,建议右键另存形式保存
原帖由 xutao1983.c 于 2009-12-14 05:29 发表
楼上的。我建了多个用户。
         以不同用户的身份用不同连接,使用同一个sequence仍然得到了 20的结果


多谢!上次说了你的测试结果是正确的。你有空在V9.1下也测一下试试,我前面看到有人在8.2下测试也是20.

你可能感兴趣的:(再次请教一道730的题关于Sequence的。。)