暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

DB2表锁等待处理方法

原创 jiayou 2024-08-24
216

DB2表锁等待处理方法

概要

锁等待是实际生产中最常碰到的性能问题,如下举例锁等待问题的解决流程和步骤以供参考。

通过db2top工具执行查询以及处理

执行命令DB2TOP –d [dbname]后输入d(database)查看数据库信息:

看LockUsed(锁使用)、LockEscals(锁升级)和Lock Wait(锁等待数量),如果LockEscals数量很大时,则增加LOCKLIST和MAXLOCKS数据库参数是一个好主意或者寻找那些引起这个问题的不良查询语句。

输入l(session)查看是否有session状态是否为lock waiting,在此界面中使用“←”查看锁等待的时间(Lockwait(sec))

输入U(Lock)查看锁信息,同样可以使用“←”键来查看具体情况以确定锁等待相关的agent是哪些,输入L(Lock Chain)查看锁链信息,定位谁持有锁,谁在锁等待(id1→id2表示id2在等待id1的完成)

在Lock界面输入a后输入agentid可以查看具体SQL语句,输入e可以获取该SQL的执行计划。

问题处理步骤

db2top -d dbname

输入U(Lock)查看锁信息

确认表状态为锁持有(STS列G)、锁等待(STS列W)id(50751)、 id(59257)、id(50856)


输入L(Lock Chain)查看锁链信息(id1→id2表示id2在等待id1的完成)

在Lock界面输入a后输入agentid可以查看具体SQL语句,输入e可以获取该SQL的执行计划。


输入大写S运行DB2快照信息(:q退出编辑)


在Lock界面输入a后输入agentid可以查看具体SQL语句(跟开发人员确认语句),输入f可以杀掉该SQL的执行计划。接着在输入大写L(Lock Chain)查看锁链信息是否还在。

通过命令行操作处理步骤

查询锁信息

db2pd -db dbname -locks show detail

多分区执行

db2_all “db2pd -db dbname -locks show detail”

#(STS列G锁持有 W锁等待)

db2 “select * from sysibmadm.locks_held with ur”

定位SQL信息

db2pd -db dbname -applications |grep -i agentid #输出有sqlid

db2pd -db dbname -dynamic |grep -I sqlid #输出sql语句

或者

db2 get snapshot for locks for application agentid 50751

杀掉agentid

db2_all "db2 connect to dbname; db2 force application (50751)"

最后修改时间:2024-08-24 07:52:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论