賽迪網 > 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技術 ·開發·網管·安全·數據庫·作業系統
  資訊化 ·熱點·專題·訪談·週刊·方案案例
· 移動資訊化市場方興未艾 企業呼喚標準出臺
· 如何把握企業價值差異 避免CRM與SCM脫節
· 齊看四大廠商的SaaS動態 ERP案例分析
· 通方期貨CRM解決方案 方正電子公文系統
  IT博客 ·曾劍秋·項立剛·Java學習·網管
  IT技術論壇 ·開發·網管·安全·數據庫·系統