IT分销/经销数据库null

轻松解决IBM DB2数据库定位锁等待问题

在应用中,我们经常会碰到sql执行很慢,但是数据库cpu和内存使用率又不高的情况,类似的问题基本上由于锁,排序等原因造成,本文主要描述如何去定位锁等待问题,谁在锁等待?等待谁持有的锁?锁在那个表? 一、测试准备 1、先在session1执行如下操作,创建测试表 #db2 connect to eos #expor...显示全部
在应用中,我们经常会碰到sql执行很慢,但是数据库cpu和内存使用率又不高的情况,类似的问题基本上由于锁,排序等原因造成,本文主要描述如何去定位锁等待问题,谁在锁等待?等待谁持有的锁?锁在那个表?

一、测试准备


1、先在session1执行如下操作,创建测试表


#db2 connect to eos

#export DB2OPTIONS= C

#db2 "create table tacy_test (a int not null primary key,b varchar(10))"

#db2 "insert into tacy_test values(1,'a')"

#db2 "insert into tacy_test values(2,'a')"

#db2 "insert into tacy_test values(3,'a')"

#db2 "insert into tacy_test values(4,'a')"

#db2 commit

2、在session2执行如下操作


#db2 connect to eos

#export DB2OPTIONS= C

二、产生一个lock wait


在session1做一个表更新:


#db2 "update tacy_test set b='b' where a=4"

sql执行成功

在session2做同样更新操作:

#db2 "update tacy_test set b='c' where a=4"

进程被挂起等待


三、定位锁等待


1、先来看看应用的情况:


#db2pd -db eos -applications


Database Partition 0 -- Database EOS -- Active -- Up 0 days 07:37:37


Applications:

Address AppHandl [nod-index] NumAgents CoorPid Status C-AnchID C-StmtUID L-AnchID L-StmtUID Appid

0x10140040 8 [000-00008] 1 8425 Lock-wait 80 2 66 1 *LOCAL.db2inst1.071124043739

0x100CE540 7 [000-00007] 1 8358 UOW-Waiting 0 0 80 2 *LOCAL.db2inst1.071124043708


可以看到有一个应用的状态处于Lock-wait


2、现在我们来看看应用在等什么


#db2pd -db eos -locks showlock wait


Database Partition 0 -- Database EOS -- Active -- Up 0 days 07:42:56


Locks:

Address TranHdl Lockname Type Mode Sts Owner Dur HldCnt Att Rlse

0x2C8E0760 3 02001806078066020000000052 Row ..X W 2 1 0 0 0x0 TbspaceID 2 TableID 1560 RecordID 0x2668007收起
参与6

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

wangmeixingwangmeixing系统工程师
4: 4028 (x0FBC), 4028 (x0FBC), 4028 (x0FBC), 4028 (x0FBC)

8: 4028 (x0FBC), 4028 (x0FBC), 4028 (x0FBC), 4028 (x0FBC)

省略。。。

492: 4028 (x0FBC), 4028 (x0FBC), 4028 (x0FBC), 4028 (x0FBC)

496: 4028 (x0FBC), 4028 (x0FBC), 4028 (x0FBC), 4028 (x0FBC)

Slot 2:

Offset Location = 2916 (xB64)

Record Length = 76 (x4C)

Record Type = Table Directory Record

MetaIndex Root Page = 157377

Index Type = 2

Table Descriptor Pointer -- Page 157312 Slot 3

Max Insert Search = 0

Flags = x02000200

bit representation = 00000010 00000000 00000010 00000000

Check pending info:

Constraint status = x00

Constraint RID = Page 0 Slot 0

last BID = x00000000


Slot 3:


Offset Location = 2892 (xB4C)

Record Length = 24 (x18)


Record Type = Table Description Record


Number of Columns = 2



Column 1:

Type is Long Integer

Length = 4

Prohibits NULLs

Prohibits Default

Fixed offset: 0


Column 2:

Type is Fixed Length Character String

Length = 10

Allows NULLs

Prohibits Default

Fixed offset: 4


Slot 4:


Offset Location = 2869 (xB35)

Record Length = 23 (x17)


Record Type = Table Data Record (FIXEDVAR)


Fixed part length value = 15


Column 1:

Fixed offset: 0

Type is Long Integer

Value = 1


Column 2:

Fixed offset: 4
IT分销/经销 · 2011-05-25
浏览780

回答者

wangmeixing
系统工程师
擅长领域: 数据库服务器Linux

wangmeixing 最近回答过的问题

回答状态

  • 发布时间:2011-05-25
  • 关注会员:1 人
  • 回答浏览:780
  • X社区推广