常见的锁问题包括:
锁等待
锁超时
锁升级
死锁
而根据问题的特性通常分为两种:
实时事件:问题正在发生
历史事件:问题已经过去
如果实时事件,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
|