查看: 5584|回复: 7

[精华] 案例:由package isolation level导致的死锁问题

[复制链接]
招聘 : c/c++研发
论坛徽章:
45
技术图书徽章
日期:2014-03-10 14:09:192012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
跳转到指定楼层
1#
发表于 2008-3-6 09:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述:
用户运行PeopleSoft软件产品,其中报表服务器运行在Windows端,应用程序服务器运行在Linux,DB2数据库运行在Linux。
用户发现系统不时产生死锁。

分析:

首先自然是抓deadlock monitor,发现死锁竟然发生在SYSIBM.SYSTABLES上:
31) Deadlock Event ...
  Deadlock ID:   25
  Number of applications deadlocked: 2
  Deadlock detection time: 03/04/2008 10:33:53.398062
  Rolled back Appl participant no: 2
  Rolled back Appl Id: GA64656D.B005.00F546151858
  Rolled back Appl seq number: : 1ba0

32) Connection Header Event ...
  Appl Handle: 1254
  Appl Id: GA64656D.B005.00F546151858
  Appl Seq number: 7072
  DRDA AS Correlation Token: GA64656D.B005.00F546151858
  Program Name    : <app.exe>
  Authorization Id: <authid>
  Execution Id    : <exeid>
  Codepage Id: 1208
  Territory code: 1
  Client Process Id: 1896
  Client Database Alias: <dbname>
  Client Product Id: SQL08027
  Client Platform: Unknown
  Client Communication Protocol: TCPIP
  Client Network Name: <network name>
  Connect timestamp: 02/26/2008 09:18:56.499023

33) Deadlocked Connection ...
  Deadlock ID:   25
  Participant no.: 2
  Participant no. holding the lock: 1
  Appl Id: GA64656D.B005.00F546151858
  Appl Seq number: 7072
  Appl Id of connection holding the lock: GA64656C.KC06.00E0C3164336
  Seq. no. of connection holding the lock: 5153
  Lock wait start time: 03/04/2008 10:33:45.754706
  Lock Name       : 0x00000200000000000000000054
  Lock Attributes : 0x00000010
  Release Flags   : 0x00000014
  Lock Count      : 2
  Hold Count      : 0
  Current Mode    : IS  - Intent Share
  Deadlock detection time: 03/04/2008 10:33:53.398242
  Table of lock waited on      : SYSTABLES
  Schema of lock waited on     : SYSIBM  
  Tablespace of lock waited on : SYSCATSPACE
  Type of lock: Table
  Mode of lock: IX  - Intent Exclusive
  Mode application requested on lock: S   - Share
  Node lock occured on: 0
  Lock object name: 2
  Application Handle: 1254
  Deadlocked Statement:
    Type     : Dynamic
    Operation: Fetch
    Section  : 4
    Creator  : NULLID
    Package  : SQLUCE04
    Cursor   : IREFFETCH
    Cursor was blocking: FALSE
    Text     : SELECT T.TYPE, SUM(CASE WHEN TC.ENFORCED='Y' THEN 1 ELSE 0 END) AS CHILDREN, SUM(CASE WHEN TC.ENFORCED='Y' AND R.TABNAME=T.TABNAME AND R.TABSCHEMA=T.TABSCHEMA THEN 1 ELSE 0 END) AS SELFREFS FROM TABLE(SYSPROC.BASE_TABLE('DB2ADM1','PS_COMB_EXP_TAO4')) B, SYSCAT.TABLES T LEFT OUTER JOIN SYSCAT.REFERENCES R ON R.REFTABNAME=T.TABNAME AND R.REFTABSCHEMA=T.TABSCHEMA LEFT OUTER JOIN SYSCAT.TABCONST TC ON TC.TABNAME=R.TABNAME AND TC.TABSCHEMA=R.TABSCHEMA AND TC.CONSTNAME=R.CONSTNAME AND TC.TYPE='F' where T.TABNAME=B.BASENAME AND T.TABSCHEMA=B.BASESCHEMA GROUP BY T.TYPE
  List of Locks:
      Lock Name                   : 0x0000020004FFFFFF9908000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x00000010
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 563460
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : S   - Share

      Lock Name                   : 0x79FFFFFFB80000010000000100FFFFFF8A0056
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 0
      Object Type                 : Internal - Variation
      Mode                        : S   - Share

      Lock Name                   : 0x53514C5543453034FFFFFFB5FFFFFFA8FFFFFFE26C41
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 0
      Object Type                 : Internal - Plan
      Mode                        : S   - Share

      Lock Name                   : 0x0000020003FFFFFF9908006070FFFFFFF4FFFFFF9B43
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 0
      Object Type                 : Internal - Catalog Cache
      Mode                        : S   - Share

      Lock Name                   : 0x53514C554245303313FFFFFF8926FFFFFF9241
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 0
      Object Type                 : Internal - Plan
      Mode                        : S   - Share

      Lock Name                   : 0x0000020003FFFFFF9908000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x00000014
      Lock Count                  : 2
      Hold Count                  : 0
      Lock Object Name            : 563459
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : S   - Share

      Lock Name                   : 0x40FFFFFF8B00000100000005006D0056
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 0
      Object Type                 : Internal - Variation
      Mode                        : S   - Share

      Lock Name                   : 0x53514C554B453037444532FFFFFFC641
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 0
      Object Type                 : Internal - Plan
      Mode                        : S   - Share

      Lock Name                   : 0x53514C554F45303038FFFFFFB4043441
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 0
      Object Type                 : Internal - Plan
      Mode                        : S   - Share

      Lock Name                   : 0x53514C4445464C5428FFFFFFDD630641
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 0
      Object Type                 : Internal - Plan
      Mode                        : S   - Share

      Lock Name                   : 0x00001100000000000000000054
      Lock Attributes             : 0x00000010
      Release Flags               : 0x00000010
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 17
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSRELS
      Mode                        : S   - Share

      Lock Name                   : 0x00000200000000000000000054
      Lock Attributes             : 0x00000010
      Release Flags               : 0x00000014
      Lock Count                  : 2
      Hold Count                  : 0
      Lock Object Name            : 2
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : S   - Share
      Status                      : Converting
      Current Mode                : IS  - Intent Share


      Lock Name                   : 0x00001400000000000000000054
      Lock Attributes             : 0x00000010
      Release Flags               : 0x00000010
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 20
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABCONST
      Mode                        : S   - Share

      Lock Name                   : 0xFFFFFF96005204000000000000000054
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 255
      Hold Count                  : 0
      Lock Object Name            : 1106
      Object Type                 : Table
      Tablespace Name             : GLAPP
      Table Schema                : DB2ADM1
      Table Name                  : PS_COMB_EXP_TAO4
      Mode                        : X   - Exclusive

  Locks Held:    14
  Locks in List: 14

34) Deadlocked Connection ...
  Deadlock ID:   25
  Participant no.: 1
  Participant no. holding the lock: 2
  Appl Id: GA64656C.KC06.00E0C3164336
  Appl Seq number: 5153
  Appl Id of connection holding the lock: GA64656D.B005.00F546151858
  Seq. no. of connection holding the lock: 7072
  Lock wait start time: 03/04/2008 10:33:45.757663
  Lock Name       : 0x0000020004FFFFFF9908000000000052
  Lock Attributes : 0x00000000
  Release Flags   : 0x40000000
  Lock Count      : 1
  Hold Count      : 0
  Current Mode    : U   - Update
  Deadlock detection time: 03/04/2008 10:33:53.401596
  Table of lock waited on      : SYSTABLES
  Schema of lock waited on     : SYSIBM  
  Tablespace of lock waited on : SYSCATSPACE
  Type of lock: Row
  Mode of lock: S   - Share
  Mode application requested on lock: X   - Exclusive
  Node lock occured on: 0
  Lock object name: 563460
  Application Handle: 598
  Deadlocked Statement:
    Type     : Non-SQL
    Operation: Runstats
    Section  : 0
    Creator  :
    Package  :
    Cursor   :
    Cursor was blocking: FALSE
    Text     :
  List of Locks:
      Lock Name                   : 0x0000030002FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010818
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030001FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010817
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030005FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010821
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030011FFFFFFF96A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010577
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030006FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010822
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030000FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010816
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030003FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010819
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030008FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010824
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030007FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010823
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000030004FFFFFFFA6A000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 7010820
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000040002FFFFFFFD04000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 326914
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSINDEXES
      Mode                        : X   - Exclusive

      Lock Name                   : 0x00000400036507000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 484611
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSINDEXES
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000040003FFFFFFD708000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 579331
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSINDEXES
      Mode                        : X   - Exclusive

      Lock Name                   : 0x0000020004FFFFFF9908000000000052
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 563460
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : X   - Exclusive
      Status                      : Converting
      Current Mode                : U   - Update

      Lock Name                   : 0x00000200000000000000000054
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 2
      Hold Count                  : 0
      Lock Object Name            : 2
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : IX  - Intent Exclusive

      Lock Name                   : 0x00000300000000000000000054
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000020
      Lock Count                  : 10
      Hold Count                  : 0
      Lock Object Name            : 3
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLUMNS
      Mode                        : IX  - Intent Exclusive

      Lock Name                   : 0x00000400000000000000000054
      Lock Attributes             : 0x00000010
      Release Flags               : 0x40000000
      Lock Count                  : 3
      Hold Count                  : 0
      Lock Object Name            : 4
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSINDEXES
      Mode                        : IX  - Intent Exclusive

      Lock Name                   : 0xFFFFFF9600FFFFFFE104000000000000000054
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 1249
      Object Type                 : Table
      Tablespace Name             : GLAPP
      Table Schema                : DB2ADM1
      Table Name                  : PS_COMB_EXP_TAO5
      Mode                        : IN  - Intent None

      Lock Name                   : 0x00001A00000000000000000054
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 26
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSCOLDIST
      Mode                        : IX  - Intent Exclusive

  Locks Held:    19
  Locks in List: 19

两个程序,一个在跑Import from /dev/null,另一个在做Runstats。
两个都是IBM得程序,难道是bug?别忙着下结论 

首先让我们来把问题的思路捋顺,看一看具体是怎么个deadlock法。
我们把Import得程序称为A (Application Handle: 1254),Runstats得程序称为B (  Application Handle: 598)
从Lock wait start time看
A: Lock wait start time: 03/04/2008 10:33:45.754706
B: Lock wait start time: 03/04/2008 10:33:45.757663
说明A先开始等待,那么看一看A在等B得什么?
      Lock Name                   : 0x00000200000000000000000054
      Lock Attributes             : 0x00000010
      Release Flags               : 0x00000014
      Lock Count                  : 2
      Hold Count                  : 0
      Lock Object Name            : 2
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : S   - Share
      Status                      : Converting
      Current Mode                : IS  - Intent Share


这个是什么??从IS向S锁的convert,在SYSIBM.SYSTABLES上。
那这个Lock在B中呢?

      Lock Name                   : 0x00000200000000000000000054
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 2
      Hold Count                  : 0
      Lock Object Name            : 2
      Object Type                 : Table
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : IX  - Intent Exclusive
呵呵,是IX锁,因为Runstats正在修改systable表中某行的数据嘛,自然在systables上加IX了。

然后回头看B又在等A什么:

      Lock Name                   : 0x0000020004FFFFFF9908000000000052
      Lock Attributes             : 0x00000000
      Release Flags               : 0x40000000
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 563460
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : X   - Exclusive
      Status                      : Converting
      Current Mode                : U   - Update

呵呵,行锁,同样在SYSIBM.SYSTABLES,从U转向X,那么我们已经可以猜到A锁拿的了,一定是S锁咯
      Lock Name                   : 0x0000020004FFFFFF9908000000000052
      Lock Attributes             : 0x00000010
      Release Flags               : 0x00000010
      Lock Count                  : 1
      Hold Count                  : 0
      Lock Object Name            : 563460
      Object Type                 : Row
      Tablespace Name             : SYSCATSPACE
      Table Schema                : SYSIBM  
      Table Name                  : SYSTABLES
      Mode                        : S   - Share

现在大体上的picture应该已经出来了
A-----apply S row lock / apply IS table lock-----------------request convert IS to S on table ( wait for B)

B-----apply U row lock / apply IX table lock-----------------------------------------------------------------------request convert U to X on row (wait for A )

呵呵,估计各位看官还是一脑袋雾水吧 (这个棒槌在忽悠什么?)
别着急,好玩的来了……

首先对于A,我们可以看到它正在执行一个cursor
  Deadlocked Statement:
    Type     : Dynamic
    Operation: Fetch
    Section  : 4
    Creator  : NULLID
    Package  : SQLUCE04
    Cursor   : IREFFETCH
    Cursor was blocking: FALSE
    Text     : SELECT T.TYPE, SUM(CASE WHEN TC.ENFORCED='Y' THEN 1 ELSE 0 END) AS CHILDREN, SUM(CASE WHEN TC.ENFORCED='Y' AND R.TABNAME=T.TABNAME AND R.TABSCHEMA=T.TABSCHEMA THEN 1 ELSE 0 END) AS SELFREFS FROM TABLE(SYSPROC.BASE_TABLE('DB2ADM1','PS_COMB_EXP_TAO4')) B, SYSCAT.TABLES T LEFT OUTER JOIN SYSCAT.REFERENCES R ON R.REFTABNAME=T.TABNAME AND R.REFTABSCHEMA=T.TABSCHEMA LEFT OUTER JOIN SYSCAT.TABCONST TC ON TC.TABNAME=R.TABNAME AND TC.TABSCHEMA=R.TABSCHEMA AND TC.CONSTNAME=R.CONSTNAME AND TC.TYPE='F' where T.TABNAME=B.BASENAME AND T.TABSCHEMA=B.BASESCHEMA GROUP BY T.TYPE

这个说明什么?说明我们在request convert table lock from IS to S得时候正在执行这条语句,也就是这条语句产生的这个lock upgrade request。
看看这个语句,什么咚咚?就是一个普通的查询嘛。现在各位有没有什么要问的?

俺有。为啥一个查询要请求S得表锁呢?按理说应该是给S得行锁加上IS得表锁哦~~~
相信耐心地读到这里还没有关掉这个页面的读者也都明白,一般来说一个查询不大会给一个表加S锁,除非要不优化器认为做整个的一个tablescan用行锁比较好,要不有可能是lock escalation,还有要不就是某些特定的isolation level产生的结果。

怎么办?让我们先来做一个db2exfmt看看这个语句是怎么跑的:


刚才我们的那个lock convert是在什么地方的?sysibm.systables,那么也就是要们FETCH(15),要们TBSCAN(21)咯
然后继续想,我们为什么会要convert这个lock呢?从plan上看没有道理呀,难道是那个TBSCAN(21)搞得鬼?
        21) TBSCAN: (Table Scan)
                Cumulative Total Cost:                 14744.1
                Cumulative CPU Cost:                 1.77835e+08
                Cumulative I/O Cost:                 8333
                Cumulative Re-Total Cost:         32.6412
                Cumulative Re-CPU Cost:         1.38209e+08
                Cumulative Re-I/O Cost:         0
                Cumulative First Row Cost:         12.8616
                Estimated Bufferpool Buffers:         8333

                Arguments:
                ---------
                JN INPUT: (Join input leg)
                        OUTER
                MAXPAGES: (Maximum pages for prefetch)
                        ALL
                PREFETCH: (Type of Prefetch)
                        SEQUENTIAL
                ROWLOCK : (Row Lock intent)
                        NEXT KEY SHARE
                SCANDIR : (Scan Direction)
                        FORWARD
                TABLOCK : (Table Lock intent)
                        INTENT SHARE
                TBISOLVL: (Table access Isolation Level)
                        CURSOR STABILITY

                Input Streams:
                -------------
                        17) From Object SYSIBM.SYSTABLES

                                Estimated number of rows:         80260
                                Number of columns:                 4
                                Subquery predicate ID:                 Not Applicable

                                Column Names:
                                ------------
                                +Q10.$RID$+Q10.TYPE+Q10.CREATOR+Q10.NAME


                Output Streams:
                --------------
                        18) To Operator #20

                                Estimated number of rows:         80260
                                Number of columns:                 3
                                Subquery predicate ID:                 Not Applicable

                                Column Names:
                                ------------
                                +Q10.TYPE+Q10.CREATOR+Q10.NAME

看看人家TABLE LOCK是怎样计划的?
                TABLOCK : (Table Lock intent)
                        INTENT SHARE
明明是IS呀……

难道这条路不对?那让我们来看看是不是lock escalation……
跑去找找db2diag.log,没有发现escalation得信息哦,说明这里不是escalate……
到这里大家有什么看法没有?好像我们陷入死路了:没有escalation,计划中也没有S锁,真是活见鬼了……

等一下,让我们想想lock还和什么有关…………………………………………ISOLATION LEVEL
刚才我们抓访问计划的时候用的什么isolation level?我用的默认的,也就是CS。那么我们换一个看看?
每种isolation一遍,看看这个table到底有没有可能用S锁……

TBSCAN (21)

1) UR:
.
  TABLOCK : (Table Lock intent)
   INTENT NONE
  TBISOLVL: (Table access Isolation Level)
   UNCOMMITTED READ

2) CS:
.
  TABLOCK : (Table Lock intent)
   INTENT SHARE
  TBISOLVL: (Table access Isolation Level)
   CURSOR STABILITY

3) RS:
.
  TABLOCK : (Table Lock intent)
   INTENT SHARE
  TBISOLVL: (Table access Isolation Level)
   READ STABILITY
.
4) RR:
.
  TABLOCK : (Table Lock intent)
   SHARE
  TBISOLVL: (Table access Isolation Level)
   REPEATABLE READ

恩恩,有新发现,难道是这个问题?
再看一眼:
    Type     : Dynamic
    Operation: Fetch
    Section  : 4
    Creator  : NULLID
    Package  : SQLUCE04
    Cursor   : IREFFETCH

    Cursor was blocking: FALSE
    Text     : SELECT T.TYPE, SUM(CASE WHEN TC.ENFORCED='Y' THEN 1 ELSE 0 END) AS CHILDREN, SUM(CASE WHEN TC.ENFORCED='Y' AND R.TABNAME=T.TABNAME AND R.TABSCHEMA=T.TABSCHEMA THEN 1 ELSE 0 END) AS SELFREFS FROM TABLE(SYSPROC.BASE_TABLE('DB2ADM1','PS_COMB_EXP_TAO4')) B, SYSCAT.TABLES T LEFT OUTER JOIN SYSCAT.REFERENCES R ON R.REFTABNAME=T.TABNAME AND R.REFTABSCHEMA=T.TABSCHEMA LEFT OUTER JOIN SYSCAT.TABCONST TC ON TC.TABNAME=R.TABNAME AND TC.TABSCHEMA=R.TABSCHEMA AND TC.CONSTNAME=R.CONSTNAME AND TC.TYPE='F' where T.TABNAME=B.BASENAME AND T.TABSCHEMA=B.BASESCHEMA GROUP BY T.TYPE

package name是SQLUCE04,那让我们确认一下咯
select pkgname, isolation from syscat.packages where pkgname='SQLUCE04'
得到什么?
SQLUCE04            RR
恩恩……为什么是RR呢?难道是设计缺陷?别下结论,看一看这个到底是哪个package得。
在sqllib/bnd里面弄个小脚本调用db2bfd -b查找所有的db2*.bnd文件,然后发现db2uigsi.bnd得APP NAME是SQLUCE04,但是看一看默认的Isolation,竟然是RS

哈哈,很明显是用户自己搞错了,要不就是他们的PeopleSoft搞错了……
查一下,果然他们自己的rebind package得脚本把这个package rebind成RR,造成了死锁的问题
论坛徽章:
233
天枰座
日期:2016-02-02 09:36:332012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-06-22 19:28:30现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-04-08 16:56:552011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
2#
发表于 2008-3-6 09:42 | 只看该作者
very good,学习

授精

使用道具 举报

回复
论坛徽章:
5
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:532009新春纪念徽章
日期:2009-01-04 14:52:282011新春纪念徽章
日期:2011-02-18 11:43:33
3#
发表于 2008-3-6 12:48 | 只看该作者
老给wangzhonnew 授精
我怕他吃不消 :)

使用道具 举报

回复
招聘 : c/c++研发
论坛徽章:
45
技术图书徽章
日期:2014-03-10 14:09:192012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
4#
 楼主| 发表于 2008-3-6 12:50 | 只看该作者
原帖由 acme1921209 于 2008-3-6 13:48 发表
老给wangzhonnew 授精
我怕他吃不消 :)

不怕不怕,来者不拒

使用道具 举报

回复
论坛徽章:
18
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:52
5#
发表于 2008-3-6 13:44 | 只看该作者
好!

每次Wangzhong写这些问题解决帖,我都会问我自己如果是我会怎样做。

使用道具 举报

回复
论坛徽章:
2
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:猪
日期:2007-11-01 16:55:07
6#
发表于 2008-3-6 15:39 | 只看该作者
思路很清晰,呵呵,很全面

不过一开始我就想到了isolation的可能,我是猜测呵呵

感谢share!

向你学习

使用道具 举报

回复
论坛徽章:
5
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:532009新春纪念徽章
日期:2009-01-04 14:52:282011新春纪念徽章
日期:2011-02-18 11:43:33
7#
发表于 2008-3-6 23:28 | 只看该作者
原帖由 unixnewbie 于 2008-3-6 13:44 发表
好!

每次Wangzhong写这些问题解决帖,我都会问我自己如果是我会怎样做。

向你们2位学习
unixnewbie咋没有精华帖啊

使用道具 举报

回复
论坛徽章:
18
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:522012新春纪念徽章
日期:2012-02-13 15:09:52
8#
发表于 2008-3-7 07:32 | 只看该作者
原帖由 acme1921209 于 7/3/2008 01:28 发表

向你们2位学习
unixnewbie咋没有精华帖啊


因为我怕受精

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表