免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11356 | 回复: 11
打印 上一主题 下一主题

如何通过snapshot来查询什么sql语句导致锁等待的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-27 13:58 |只看该作者 |倒序浏览
db2 get snapshot for locks on testdb
---------------------------------------------------
查到有锁等待现象,

那如何通过snapshot来查询什么sql语句导致锁等待的?


---------------------------------------------
就像用db2pd -db testdb -locks wait showlocks -applications -transcations - dyn查出来一样。

论坛徽章:
0
2 [报告]
发表于 2010-04-27 14:09 |只看该作者
可以通过db2pd来查询,这个命令的具体用法在网上搜吧。

论坛徽章:
0
3 [报告]
发表于 2010-04-27 14:14 |只看该作者
可以通过db2pd来查询,这个命令的具体用法在网上搜吧。
hooboor 发表于 2010-04-27 14:09



    这种方法在我的问题里已说过了,可以用,我直想问一下如何用snapshot来查sql语句

论坛徽章:
0
4 [报告]
发表于 2010-04-27 14:23 |只看该作者
不好意思没注意看到下面的语句,快照的话可以用:
db2 get snapshot for dynamic SQL on dbname

论坛徽章:
0
5 [报告]
发表于 2010-04-27 14:36 |只看该作者
不好意思没注意看到下面的语句,快照的话可以用:
db2 get snapshot for dynamic SQL on dbname
hooboor 发表于 2010-04-27 14:23



语句到是取到了多少,但到底是哪个语句出现问题?哪个语句是导致锁等待的呢?

论坛徽章:
0
6 [报告]
发表于 2010-04-27 14:47 |只看该作者
不好意思没注意看到下面的语句,快照的话可以用:
db2 get snapshot for dynamic SQL on dbname

论坛徽章:
0
7 [报告]
发表于 2010-04-27 14:51 |只看该作者
你可以用grep过滤下lock相关的信息看看。

论坛徽章:
0
8 [报告]
发表于 2010-04-27 15:10 |只看该作者
你可以用grep过滤下lock相关的信息看看。
hooboor 发表于 2010-04-27 14:51



    同样查不到
/home/db2inst1>db2 +c "insert into aa values('rich')"
DB20000I  The SQL command completed successfully.
/home/db2inst1>

另一个窗口
/home/db2inst1>db2s

   Database Connection Information

Database server        = DB2/LINUX 8.2.9
SQL authorization ID   = DB2INST1
Local database alias   = TESTDB

/home/db2inst1>cx aa

   Database Connection Information

Database server        = DB2/LINUX 8.2.9
SQL authorization ID   = DB2INST1
Local database alias   = TESTDB




----------------------------------------------------------------
/home/db2inst1>db2 get monitor switches

            Monitor Recording Switches

Switch list for db partition number 0
Buffer Pool Activity Information  (BUFFERPOOL) = OFF
Lock Information                        (LOCK) = ON  2010-04-27 10:13:04.558058
Sorting Information                     (SORT) = OFF
SQL Statement Information          (STATEMENT) = ON  2010-04-27 10:13:29.307992
Table Activity Information             (TABLE) = OFF
Take Timestamp Information         (TIMESTAMP) = ON  2010-04-27 06:27:02.632310
Unit of Work Information                 (UOW) = OFF


db2 get snapshot for dynamic sql on testdb|grep -i lock
没有记录

论坛徽章:
0
9 [报告]
发表于 2010-04-27 16:40 |只看该作者
看你的参数应该是没问题的,如果没有相关的语句,那应该是没有锁等待吧。对于V9以上版本,你也可以看查这个视图:sysibmadm.snaplockwait

论坛徽章:
0
10 [报告]
发表于 2010-05-26 08:59 |只看该作者
传统的做法:
db2 "list applications show detail"|grep -vE "UOW Waiting|Connect Completed"
找出处于lock waiting的进程
db2 "get snapshot for application agentid <lock waiting的agentid>"
在输出的最后可以看到锁等待的情况,包括等待的锁资源和锁住该锁资源的进程
再db2 "get snapshot for application agentid <lock资源的agentid>"就可以看到锁住资源的sql语句

在多层锁等待的情况下需要循环上面的做法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP