打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DB2中锁升级 - xiangmeng2000的个人空间 - ITPUB个人空间 - powered by X-Space

      DB2数据库中的每个锁在内存中都需要一定的内存空间,为了减少锁需要的内存开销,DB2提供了锁升级功能。锁升级通过对表加上非意图性的表锁,同时释放行锁来减少锁的数目,从而达到减少锁所需要的内存开销的目的。锁升级是数据库管理器自动完成,但是有两个数据库配置参数直接影响着锁升级的处理:

Locklist : 数据库全局内存中用于存的内存,单位是页(4k

Maxlocks:允许某个应用程序所有的锁所使用的内存占整个锁内存的百分比。

 

在两种情况下会触发锁升级:

·某个应用程序请求的锁所占用的内存空间超出了maxlockslocklist的乘积大小。这时,数据库管理器尝试为该提出锁请求的应用程序申请表锁,同时释放行锁来节省锁内存空间。

·数据库中的所有锁占用的内存空间超过locklist大小。这时,数据库管理器也将尝试为提出锁请求的应用申请表锁,并释放行锁来节省内存空间。

锁升级有可能会失败,例如:一个应用正在对一个表加IX锁,对表中的某些行加X锁,另一个应用又来请求表上的IS锁以及表中大量行上的S锁,由于申请的锁数目过多而引起锁升级。于是数据库管理器尝试着为该应用申请表锁S来减少应用所需要的锁的数目,但是表锁S与表上已经存在的IX锁相冲突,于是锁升级不能成功。于是锁升级失败的应用接到一个-912SQLCODE。在锁升级失败后,应该考虑增加locklistmaxlocks,同时对于编程人员而言,可以在程序里对锁升级失败的应用进行回滚并重新提交(例如:if sqlca.sqlcode=-912 then rollback and retry

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何在?DB2?UDB?中监控死锁1
OLTP 应用程序的 DB2 调优技巧
利用 Oracle 10g 技能学习 DB2 9.1 for Linux, UNIX an...
如何综合掌握 DB2 和 Informix - Unix爱好者家园
DB2和Oracle区别
DB2数据库优化需要掌握的几条基本策略
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服