Blog >> Tag: top

Top Objects finds PK Index

by Dallas D. on Oct 31 2008 at 10:54 AM in Wait Time Analysis  

(This guest blog entry contributed by Dallas D., a long time Ignite user and expert DBA)

I actually had occasion to use the "top objects" view today, and it was very handy!  I had a insert that was experiencing massive buffer busy waits (same insert running across 32 threads, doh!).  I drilled into bbw, and there were of course tons of blocks listed.  I had looked at the table and index structures, and determined that there was certainly contention on the primary key, but it looked like another index with different columns might have contention on it as well.  I ran a couple of the "block number between block_id and block_id + blocks -1" queries and confirmed the one index (the pk index on the ID column, sys_c0011109), then remembered the top objects view.  It confirmed the pk index was getting the bulk of the bbw by far, and also confirmed that the enq: TX - index contention was also on the pk index and not on the second index.  Very cool and great time-saver!

My original (confirmed) thought was that there was definitely pk contention from 32 processes inserting where the ID number increased sequentially.  After looking a some of the data, I thought there may be contention on index1 as well - but Ignite didn't indicate that so I can ignore it for the time being.

some table/index background and screen shots.

 

SQL> desc fcsiprd.work_item

Name                                          Null?             Type
----------------------------------------- --------            ----------------------------
ID                                                NOT NULL    NUMBER
WORK_INSTANCE_ID               NOT NULL     NUMBER
SEQUENCE                               NOT NULL     NUMBER
UUID                                                                 VARCHAR2(36)
RAW_DATA                                                       VARCHAR2(4000)
XML_DATA                                 NOT NULL     FCSIPRD.XMLTYPE
CREATE_TS                                                     TIMESTAMP(6)
UPDATE_TS                                                      TIMESTAMP(6)

select index_name,column_name,column_position
from dba_ind_columns
where table_name = 'WORK_ITEM';

INDEX_NAME                     COLUMN_NAME          COLUMN_POSITION
------------------------------        --------------------               ------------------------------
INDEX1                              WORK_INSTANCE_ID                   1
INDEX1                              SEQUENCE                                    2
INDEX1                              CREATE_TS                                   3
SYS_C0011109                  ID                                                    1

SQL> select id,WORK_INSTANCE_ID,sequence,create_ts
2  from fcsiprd.work_item
3  where rownum < 25;

      ID   WORK_INSTANCE_ID   SEQUENCE       CREATE_TS
----------  ----------------------------     ----------------         -----------------
      17               58                      428483                  28-OCT-08 06.55.24.020000 PM
      18               58                      428484                  28-OCT-08 06.55.24.020000 PM
      19               58                      428485                 28-OCT-08 06.55.24.020000 PM
      20               58                      428486                 28-OCT-08 06.55.24.020000 PM
      21               58                      428487                 28-OCT-08 06.55.24.020000 PM
      22               58                      428488                 28-OCT-08 06.55.24.020000 PM
      23               58                      428489                  28-OCT-08 06.55.24.020000 PM
      24               58                      428490                  28-OCT-08 06.55.24.020000 PM
      25               58                      428491                  28-OCT-08 06.55.24.020000 PM
      26               58                       428492                 28-OCT-08 06.55.24.020000 PM
      27               58                      428493                  28-OCT-08 06.55.24.020000 PM

      ID      WORK_INSTANCE_ID    SEQUENCE       CREATE_TS
----------    ------------------------------     ----------              ------------------------
      28               58                            428494               28-OCT-08 06.55.24.020000 PM
      29               58                            428495               28-OCT-08 06.55.24.020000 PM
      30               58                            428496               28-OCT-08 06.55.24.020000 PM
      31               58                            428497               28-OCT-08 06.55.24.020000 PM
      32               58                            428498               28-OCT-08 06.55.24.020000 PM
      33               58                           428499                28-OCT-08 06.55.24.020000 PM

 

 

Most of the contention is on the PK  index - sys_c0011109.