资源描述:
《DB2诊断系列之---定位锁等待问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、DB2诊断系列之…定位锁等待问题2007-11-2610:46作者:tacylee出处:论坛整理责任编辑:方舟在DB2应用中,我们经常会碰到sql执行很慢,但是数据悴cpu和内存使用率又不高的情况,类似的问题基本上由于锁,排序等原因造成,本文主要描述如何去定位锁等待问题,谁在锁等待?等待谁持冇的锁?锁在那个表?一、测试准备1、先在sessionl执行如下操作,创建测试表#db2connecttoeos#exportDB2OPTIONS=+C#db2"createtabletacy_test(ain
2、tnotnullprimarykey,bvarchar(10))"#db2"insertintotacy_testvalues(1,'a')"#db2"insertintotacy_testvalues(2;a')"#db2"insertintotacy_testvalues(3,,a')"#db2"insertintotacy_testvalues(4;a')"#db2commit2^在session2执行如下操作#db2connecttoeos#exportDB2OPTIONS=+C二、产生一
3、个lockwait在sessionl做一个表更新:#db2"updatetacy_testsetb=*b'wherea=4"sql执行成功在session2做同样更新操作:#db2"updatetacy_testsetb=*c'wherea=4"进程被挂起等待三、定位锁等待1、先来看看应用的情况:#db2pd・dbeos・applicationsDatabasePartition0-DatabaseEOS--Active-Up0days07:37:37Applications:AddressApp
4、Handl[nod-index]NumAgentsCoorPidStatusC-AnchlDC-StmtUIDL-AnchlDL-StmtUIDAppid0x101400408[000-00008]18425Lock-wait802661LOCAL.db2inst1.0711240437390x100CE5407[000-00007]18358UOW-Waiting00802*LOCAL.db2inst1.071124043708可以看到有一个应用的状态处于Lock-wait2、现在我们来看看应用
5、在等什么#db2pd・dbeos-locksshowlockwaitDatabasePartition0-DatabaseEOS-Active-Up0days07:42:56Locks:AddressTranHdlLocknameTypeModeStsOwnerDurHldCntAttRise0x2C8E0760302001806078066020000000052Row..XW21000x0TbspacelD2TablelD1560RecordID0x2668007锁的类型为Row(行锁),X锁
6、(排他锁),下面是我们最关心的锁的位置TbspacelD2TablelD1560RecordID0x2668007其中TbspacelD为表空间ID,TablelD为农的ID,RecordID代表具体位置,全部应该是0x0266807,其中前面三个字节为pagenumber,为0x02668,后面一个字节代衣soltidentifier,为0x073、找到相应的表#db2"selecttbspace,tabschema,tabname,tableid,tbspaceidfromsyscat.tab
7、leswheretbspaceid=2andtableid=1560"TBSPACETABSCHEMATABNAMETABLEIDTBSPACEIDUSERSPACE1DB2INST1TACY_TEST156021record(s)selected.4、根据RecordID找到锁在哪行db2提供了一个强人的数据分析T具db2dart,可以dump出相应的page数据#db2darteos/dd/tsi2/oi1560/ps157312p/np1/vyWarning:Thedatabasestate
8、isnotconsistent.Warning:ReorgrowsMAYbeduetotheinconsistentstateofthedatabase.DB2DARTProcessingcompletedwithwarning(s)!CompleteDB2DARTreportfoundin:/home/db2instl/sqllib/db2dump/DART()()()()/EOS.RPT其中tsi为表空间id⑵,oi为表id(1560),ps为pagenumber(0x0266