赛迪网 > IT技术 数据库 > 精彩更新
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

轻松解决IBM DB2数据库锁等待的相关问题 (1)

发布时间:2008.05.08 05:06     来源:赛迪网    作者:Alizze

【赛迪网-IT技术报道】在实际的工作和学习中中,许多人经常会遇到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

锁的类型为Row(行锁),X锁(排他锁),下面是我们最关心的锁的位置

TbspaceID 2 TableID 1560 RecordID 0x2668007

其中TbspaceID为表空间ID,TableID为表的ID,RecordID代表具体位置,全部应该是0x0266807,其中前面三个字节为page number,为0x02668,后面一个字节代表solt identifier,为0x07

3、找到相应的表

#db2 "select tbspace,tabschema,tabname,tableid,tbspaceid from syscat.tables where tbspaceid=2 and tableid=1560"

TBSPACE TABSCHEMA TABNAME TABLEID TBSPACEID

------------ ----------- ---------- ------- ---------

USERSPACE1 DB2INST1 TACY_TEST 1560 2

1 record(s) selected.

4、根据RecordID找到锁在哪行

db2提供了一个强大的数据分析工具db2dart,可以dump出相应的page数据

#db2dart eos /dd /tsi 2 /oi 1560 /ps 157312p /np 1 /v y

Warning: The database state is not consistent.

Warning: Reorg rows MAY be due to the inconsistent state of the database.

DB2DART Processing completed with warning(s)!

Complete DB2DART report found in:

/home/db2inst1/sqllib/db2dump/DART0000/EOS.RPT

其中tsi为表空间id(2),oi为表id(1560),ps为page number(0x0266807),需要转换为十进制,在结尾必须加p,np代表你要获取的页数,v为是否详细输出。

1 2 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 解决IBM DB2数据库锁等待的相关问题 (05-07) · 讲解DB2数据库性能调整的十个实用技巧 (05-07)
· 教你快速掌握IBM DB2数据库的性能参数 (05-07) · 讲解IBM DB2数据库性能调整的相关命令 (05-07)
· 讲解DB2数据库性能调整的十个实用技巧 (05-07) · 锁现象通常分为死锁和锁等待两种情形 (04-24)
· 实例讲解DB2数据库中SELECT语句高级用法 (04-22) · 在DB2数据库中很难理解的catalog单词 (04-17)
· 提高IMPORT的性能 (04-10) · DB2 9.5的数据库内存保护 (04-10)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 我国软件行业未来3-5年投资增长将超30%
· 案例分析 eHR自行开发还是选择成熟产品
· 签合同前的四问 谈八大厂商“云计算”理念
· 亚略特烟草解决方案 移民安置信息管理系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统