|   常见的锁问题包括: 锁等待 锁超时 锁升级 死锁 而根据问题的特性通常分为两种: 实时事件:问题正在发生 历史事件:问题已经过去 如果实时事件,DBA 可以通过查看表信息、GET SNAPSHOT 或者 db2pd/db2top 查看数据库当前的锁状况;这毕竟少数,往往锁问题都是历史事件,应用通过查看日志才发现存在锁问题,这种情况下,需要数据库本身对锁事件进行监控,如果发生收集相关的信息,方便DBA去分析。  
 
     
  
  
   
   | 数据库版本 | 实时事件监控工具 | 历史事件监控工具 |   
   | V9 之前的版本 | 表函数 SNAP_GET_LOCKWAIT/GET SNAPSHOT FOR LOCKS | db2cos |   
   | V9.1 | 新增管理视图 SYSIBMADM. SNAPLOCKWAIT | db2cos |   
   | V9.5 |  | db2cos |   
   | V9.7 |  | 事件监控/db2cos |   
   |  |  |  |             通过事件监控抓取锁信息配置方法1. 创建事件监控(create event monitor) 1.1 创建bufferpool 1.2 创建临时表空间 1.3 创建事件监控   2. 配置数据库相关参数  
  
   
   | 事件监控类型 | 相关数据库参数 |   
   | 锁等待事件监控 | MON_LOCKWAIT,MON_LW_THRESH |   
   | 锁超时事件监控 | MON_LOCKTIMEOUT,LOCKTIMEOUT |   
   | 死锁事件监控 | MON_DEADLOCK,DLCHKTIME |     
  
   
   | 数据库参数 | 参数详解 |   
   | MON_LOCKWAIT | 设置锁事件监控对锁信息收集的详细程度,值包括:NONE,WITHOUT_HIST, WITH_HIST,HIST_AND_VALUES; |   
   | MON_LOCKTIMEOUT | 同MON_LOCKWAIT, 同时参数LOCKTIMEOUT |   
   | MON_DEADLOCK | 同MON_LOCKWAIT |   
   | MON_LW_THRESH | 设置锁等待发生的时间阀值,超过该值将会触发锁等待事件监控,单位微妙 |    参数配置命令:  
 db2 update db cfg using MON_LOCKTIMEOUT HIST_AND_VALUES 
 MON_DEADLOCK HIST_AND_VALUES MON_LOCKWAIT HIST_AND_VALUES 
 MON_LW_THRESH 5000000 
   |