生产环境,经常出现大面积锁表,请问有什么好的解决方法?

生产环境,经常出现大面积锁表,业务收到严重影响数据库db2, -911,有什么好的解决方法?显示全部

生产环境,经常出现大面积锁表,业务收到严重影响
数据库db2, -911,有什么好的解决方法?

收起
参与23

查看其它 4 个回答tongshuai的回答

tongshuaitongshuai  数据库工程师 , 北京新数科技有限公司

从报错信息来看,是产生了锁超时,这里就需要找到持有锁的连接和等待锁的连接信息。
1、首先查询目前数据库存在的锁等待
db2pd -d DBNAME  -wlocks
有三列信息需要关注的
agent_id :应用程序 id
lockname:锁名字,重点关注锁名一样的信息
sts :锁状态,如果是‘G’说明应用持有这个锁,‘W’说明应用等待这个锁。

2、根据前面查到的 agentid来查application新
db2pd -d DBNAME -app app=agentid
或者
db2pd -d DBNAME -apinfo app=agentid
这样可以查到锁和被锁的连接情况。

还有一种就是直接查系统表 SYSIBMADM.MON_LOCKWAITS。
select LOCK_NAME,REQ_APPLICATION_HANDLE,REQ_STMT_TEXT,HLD_APPLICATION_NAME,HLD_CURRENT_STMT_TEXT from SYSIBMADM.MON_LOCKWAITS with ur

用这条语句可以查出正在锁和锁等待的应用信息,更多信息可以选择更多列。

记住,上面的查锁等待信息的操作需要在锁等待时操作,如果出现了这个报错说明已经超时回滚了,也就差不到信息了。

互联网服务 · 2019-11-27
浏览3549
liuyh 邀答
  • @tongshuai :兄弟,锁事件监视器一般是默认开启的,可以用它查看锁监控历史信息。
    2019-11-28

回答者

tongshuai
数据库工程师北京新数科技有限公司

tongshuai 最近回答过的问题

回答状态

  • 发布时间:2019-11-27
  • 关注会员:5 人
  • 回答浏览:3549
  • X社区推广