久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

DB2中怎么快速定位鎖等待語句

191次閱讀
沒有評論

共計 3836 個字符,預計需要花費 10 分鐘才能閱讀完成。

這篇文章主要為大家展示了“DB2 中怎么快速定位鎖等待語句”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“DB2 中怎么快速定位鎖等待語句”這篇文章吧。

    在 DB2 日常運維中,我們時常會碰到某幾條 sql 執行很慢,但是數據庫服務器 cpu 和內存使用率又不高的情況,類似的問題基本上由于鎖、排序等原因造成的。下面就從一個實例來分析如何去快速定位鎖等待問題以及鎖在那個表。

  一、鎖在日志中的信息

  當你在數據庫日志 DB2DIAG.LOG 中發現大量 sqlcode 報 911 信息時,一般都是有鎖等待問題。

2014-01-03-10.05.26.616285+480 I4936115E839        LEVEL: Severe

PID     : 16724                TID  : 47174238857536PROC : db2sysc 0

INSTANCE: db2inst1             NODE : 000          DB   : PORTALDB

APPHDL  : 0-47283              APPID: 10.4.125.115.38673.140109201531

AUTHID  : IPORTAL

EDUID   : 88                   EDUNAME: db2agent (PORTALDB) 0

FUNCTION: DB2 UDB, relation data serv, sqlrr_array_input, probe:210

DATA #1 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes

sqlcaid : SQLCA     sqlcabc: 136  sqlcode: -911   sqlerrml: 1

sqlerrmc: 2

sqlerrp : SQLRI2C4

sqlerrd : (1) 0x80100002      (2) 0x00000002      (3) 0x00000000

          (4) 0x00000000      (5) 0xFFFFFE0C      (6) 0x00000000

sqlwarn : (1)      (2)      (3)      (4)        (5)       (6)    

          (7)      (8)      (9)      (10)        (11)

  二、DB2PD 分析鎖等待

db2pd 工具主要用于收集 DB2 實例和數據庫的統計信息,db2pd 的最大優點是信息獲取非常快, 并 且不需要消耗數據庫引擎資源。使用這種強大的工具,必須具有 SYSADMIN 權限,而且在 UNIX 或 Linux 環境中必須是實例的所有者。

$db2pd -db portaldb -app|more         #獲取應用程序的信息

Database Partition 0 — Database PORTALDB — Active — Up 17 days 07:04:15 — Date 2014-01-10-15.33.14.983796

Applications:

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

                       WorkloadID  WorkloadOccID CollectActData          CollectActPartition     CollectSectionActuals  

0x0000000201050080 26       [000-00026] 1          61         ConnectCompleted        0        0          0        0          *LOCAL.DB2.131224002909                  

                       0           0             N                       C                       N  

0x0000000201450080 47914    [000-47914] 1          104        UOW-Waiting             0        0          677      41         10.4.125.114.11658.140110014742          

                       1           3694          N                       C                       N  

0x0000000200F80080 19       [000-00019] 1          54         UOW-Waiting             0        0          0        0          *LOCAL.DB2.131224002902                  

                       0           0             N                       C                       N  

進一步分析找到 applid 為 47914 的 anchid

$db2pd -db portaldb -app|grep -i 47914

0x0000000201450080 47914    [000-47914] 1          104        UOW-Waiting             0        0          98       1          10.4.125.114.11658.140110014742                                  1           3694          N                       C                       N  

0x0000000201450080 47914    [000-47914] 10.4.125.114                             None          IPORTAL                                                                                                                        

0x0000000201450080 47914    [000-47914] n/a    

–anchid 為 98
– 然后使用 db2pd -dynamic 功能, 根據 anch =98 查找出該 47914 應用 id 號對應的正在執行的 sql(v9 以上版本適用,v8 版本 db2pd -dynamic 無 anch= ** 這個選項)  

$db2pd -db portaldb -dynamic anch=98|more

System Temp Table Stats:

       Number of System Temp Tables    : 69817

       Comp Eligible Sys Temps         : 0

       Compressed Sys Temps            : 0

       Total Sys Temp Bytes Stored     : 16140381976

       Total Sys Temp Bytes Saved      : 0

       Total Sys Temp Compressed Rows  : 0

       Total Sys Temp Table Rows:      : 1134615144

User Temp Table Stats:

       Number of User Temp Tables      : 720

       Comp Eligible User Temps        : 0

       Compressed User Temps           : 0

       Total User Temp Bytes Stored    : 90045

       Total User Temp Bytes Saved     : 0

       Total User Temp Compressed Rows : 0

       Total User Temp Table Rows:     : 551

Database Partition 0 — Database PORTALDB — Active — Up 17 days 07:06:14 — Date 2014-01-03-15.35.13.996815

Dynamic Cache:

Current Memory Used           733842896

Total Heap Size               1675218370

Cache Overflow Flag           0

Number of References          19142165

Number of Statement Inserts   151614

Number of Statement Deletes   116009

Number of Variation Inserts   116930

Number of Statements          35605

Dynamic SQL Statements:

Address            AnchID StmtUID    NumEnv     NumVar     NumRef     NumExe     Text

0x00002AEA103CF0C0 98     90         1          1          1          1          select count(*) as col_0_0  from KC_USER user0_ where user0_.USER_ID=349289

— 同樣也可以使用獲取快照的方式來看當前 applid 為 47914 的 application 在執行什么 sql

$db2 get snapshot for application agentid 47914

當你發現是這樣一條查詢語句發生了鎖等,可以立即終止鎖等

方法是:

$db2 force application(47914)

注:后來聯系開發,知道他們正在修改 KC_USER 表,長時間沒有提交,所以造成了大量有關這個表的鎖等。事務提交后,該問題解決。

以上是“DB2 中怎么快速定位鎖等待語句”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計3836字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 逊克县| 滦平县| 中阳县| 兰坪| 鄱阳县| 宜兰县| 灵石县| 鸡西市| 梅州市| 宁陵县| 印江| 灵山县| 诸城市| 庄浪县| 勃利县| 道孚县| 遵化市| 济宁市| 南城县| 寿光市| 环江| 罗定市| 卓尼县| 富锦市| 遵义市| 包头市| 巢湖市| 临沧市| 永嘉县| 仙游县| 高台县| 罗田县| 洪雅县| 临清市| 仙桃市| 海安县| 石景山区| 谢通门县| 普宁市| 开封县| 翁源县|