怎么没人提问啊?我提个议题,我们来讨论一下锁的问题
给大家看一个锁升级的例子, 复杂吧!这可是我们应用中经常遇到的哦。
db2 "export to fhdsckmxz.del of select jyrq,zym,jdbz,fse,ye,czy,pzzl,
pzh,beiz,dlhjgm,dlhzuh,fljym,jylx,mxbc,sqczy,sxrq,czlsh,zh,kmkzz
FROM fhdsckmxz
where zh = '0059900201101000881244'
and jyrq >= '2002-08-20'
and jyrq order by mxbc"
1) 这条语句查询出来的结果其实只有几条记录,但还是有锁升级!
2) 所以,我们经常建议操作员查询条件精确、精确、再精确,
看来不能彻底解决锁升级的问题。
3) 我认为,这是我们的一个误区!
db2中的日志是这样的:
2002-10-23-16.54.43.572844 Instance:db2isjc Node:000
PID:70428(db2agent (JCRUN)) Appid:*LOCAL.db2isjc.021023075142
data_management sqldEscalateLocks(锁升级) Probe:3 Database:JCRUN
-- Lock Count, Target : 113526, 56763
当前持有的锁数目 在锁升级之前所需的锁数目
这么大的锁持有量,肯定不是靠修改db2配置能解决的!
-- Table (ID) Name : (3;1813) JCRUN .FHDSCKMXZ
锁升级的表标识符信息和表名
-- Locks, Request Type : 113523S, S
当前持有的行锁数目 需要获取'S'级别的表锁
-- Result (0 = success): FFFF8544
获取表锁级别结果的内部返回码
db2内部返回码说明,谁有兴趣看,我给你:)
出错的sql语句
7365 6c65 6374 206a 7972 712c 7a79 6d2c select jyrq,zym,
6a64 627a 2c66 7365 2c79 652c 637a 792c jdbz,fse,ye,czy,
707a 7a6c 2c70 7a68 2c62 6569 7a2c 646c pzzl,pzh,beiz,dl
686a 676d 2c64 6c68 7a75 682c 666c 6a79 hjgm,dlhzuh,fljy
6d2c 6a79 6c78 2c6d 7862 632c 7371 637a m,jylx,mxbc,sqcz
792c 7378 7271 2c63 7a6c 7368 2c7a 682c y,sxrq,czlsh,zh,
6b6d 6b7a 7a20 4652 4f4d 2066 6864 7363 kmkzz FROM fhdsc
6b6d 787a 2077 6865 7265 207a 6820 3d20 kmxz where zh =
2730 3035 3939 3030 3230 3131 3031 3030 '005990020110100
3038 3831 3234 3427 2061 6e64 206a 7972 0881244' and jyr
7120 3e3d 2027 3230 3032 2d30 382d 3230 q >= '2002-08-20
2720 616e 6420 6a79 7271 203c 3d20 2732 ' and jyrq 3030 322d 3130 2d32 3327 206f 7264 6572 002-10-23' order
2062 7920 6d78 6263 20 by mxbc