热门关键字:  PHP  Cisco  seo  网络广告 虚拟主机 中文域名
当前位置 :| 主页>数据库>DB2>

DB2数据库锁的问题

来源: 作者: 时间:2006-07-23 点击:
简介

  锁是数据库为了控制并发数据的完整性而引入的机制,在并发应用中出现锁现象并不可怕,锁现象通常分为死锁和锁等待两种情形。

  死锁是因为两个并发的进程或者线程同时各自占有一个资源,又需要占有对方资源,但又都各不相让造成的,这通常是因为程序在并发上考虑不周造成的。

  锁等待则是数据库中最普通的情况,一各应用使用数据期间必然要加锁,防止其他进程或应用破坏数据,其他进程或应用在此期间不得不等待前一个应用释放锁。锁等待时间参数是可调的,但要视实际应用情况而定,比如在网络环境中,复杂应用环境,或者对实时性要求不高的环境中,可以将锁等待时间调大一些,有些情况要调小一些。锁等待不同于死锁,死锁属于程序并发不当,需要调整程序并发机制,锁等待则属于性能问题,可能需要调整程序的sql语句。

  不管是死锁还是锁等待,数据库都有相应参数可调,也有相应的工具可以捕获和分析,以下是锁处理的通常办法。

  查看和更改与锁相关的主要数据库参数

  查看当前并发应用

  查看和更改快照参数 

  获取快照

  使用事件查看器

  1. 查看和更改与锁相关的主要配置参数

  CLP方式:

  db2 get db cfg

  在参数列表中寻找DLCHKTIME和LOCKTIMEOUT两个参数。

  -DLCHKTIME 单位是毫秒,是DB2检查死锁的间隔时间,假设该值为10000ms,则意味着每隔10秒钟检查一下当前数据库中有无死锁存在,如有死锁,会选择回滚其中的某一个事务,让另外一个事务完成交易。

  -LOCKTIMEOUT单位是秒,是锁等待最长时间,超过该时间仍未获得锁,则返回错误。

  设置提示:

  -缺省情况下,LOCKTIMEOUT是-1,意味着锁等待时间无限期,这和实际应用需求一般是不太相符的,需要将其值设为大于0的一个数。

  -DLCHKTIME时间通常要设得比LOCKTIMEOUT时间小一些,否则未等发现死锁,就会被以锁等待超时而返回错误。

  更改示例(CLP方式)

  db2 update db cfg using locktimeout 10
 

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册