Insert, Update, Delete, Select, and Refresh

SQL Performance Analyzer reports on INSERT, UPDATE, DELETE, SELECT, and REFRESH statements.

Users might want direct I/U/D processing against the tables, or to use “where current of cursor” techniques. Both forms of requests are handled in the Enhanced Explain reports. Other information, such as the number of columns updated, is also provided.

The Db2 SQL Performance Analyzer Enhanced Explain Report contains descriptions of processing under Db2®, with the emphasis on what steps Db2 is taking, and in what order. SQL PA provides the statistics accompanying the tables and indexes used for access. Other notations describe query transformation from subquery to join, subquery to simple predicate, or join to subquery access, by direct rowid.

Referential integrity relationships are also noted in the explain report for INSERT, UPDATE, and DELETE statements, notifying you of the additional processing caused by the relationships.

The following example shows Insert (query 12) processing.

EXPLAIN PLAN SET QUERYNO = 100000012 FOR
INSERT INTO TDT690.L1000
    VALUES (100100, 'AAAAA', 'BBBBB', 'CCCCC', 'DDDDD', 'EEEEE', 'FFFFF',
    'GGGG', 'HHHHH', 'IIIII', 100100, 'JJJJJ', 'KKKKK', 'LLLLL','MMMM',
    'NNNNN', 'OOOOO', 'PPPP', 'QQQQQ', 'RRRRR', 100100, 'SSSS','TTTTT',
    'UUUUU', 'VVVV', 'WWWWW', 'XXXXX', 'YYYY', 'ZZZZ', 'AAAAA', 100100,
    'BBBB', 'CCCCC', 'DDDDD', 'EEEE', 'FFFF', 'GGGGG', 'HHHH', 'IIII',
    'JJJJJ', 'KKKKK', 'LLLL', 'MMMM', 'NNNNN', 'OOOO', 100100, 'PPPPP',
    'QQQQQ', 'RRRR', 'SSSS')

 QUERYNO:  100000012   QBLOCKNO:     1   PLANNO:     0   MIXOPSEQ:     0
 PROCESS ->

 INSERT VIA CLUSTERING INDEX
 ---------------------------
 CREATOR: TDT690
 TABNAME: L1000

 VERS:  0  KEY LEN: 6 PADDED:  -  C-ED:  Y C-ING:  Y CLUSRATIO:  99.9995
 FULLKEY CARD:                 99340 FIRSTKEY CARD:                99340
 TYPE: 2  NLEAF PAGES:           412 NLEVELS:  3 UNIQUE: D  DUPLICATE OK
  1 OF  1 COLUMNS ARE MATCHED  CLOSE:  Y  LOCK MODE:  IS  BPOOL: BP10

  +------------------------------------------------------------------+
  |ANL7012I *** GUIDELINE:                                           |
  |Make sure that you have defined adequate Free Space parms in this |
  |index structure, and in the data table, to keep rows in the|
  |clustered order and avoid fragmentation. Both Freepage and Pctfree|
  |should be deployed, and Runstats periodically run to update stats.|
  +------------------------------------------------------------------+

 INSERT VIA IDX
 --------------
 CREATOR: TDT690
 TABNAME: L1000

 INSERT PROCESSING APPLIED TO A   4K SEGMENTED TSPACE WITH      3 TABLES
 VERSION:   0  TABLE CONTAINS A TOTAL OF:                31680  4K PAGES
 TABLE ROWS:               100000  COLUMNS:   50 REC LENGTH:  1008 BYTES
 DSSIZE:    0 GB  NUMBER OF MQTS:   0 LOG: Y AVG ROW LENGTH:  1006 BYTES
 TYPE: T  LOCK SIZE: A  TS LOCK MODE:  IX  LOCK PART: N  CLOSE TABLE: Y
 PAGES WITH ROWS:  99%  PCT COMPRESSED:   0% MAX ROWS: 255 BPOOL: BP11
 ENCODE: E  CCSIDS ARE SBCS:   833 DBCS:   834 MIXED:   933  VOLATILE: N

 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
 *  QUERY  100000012 WILL REQUIRE    28.69939 SECONDS OF ELAPSED TIME  *
 *  DURING WHICH    25.63702 SECONDS OF CPU TIME WILL BE CONSUMED AND  *
 *  A TOTAL OF         3 PHYSICAL I/O REQUESTS WILL BE ISSUED TO DISK  *
 *  QUNITS      1400 ESTIMATED PROCESSING COST $       5.8068 DOLLARS  *
 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

 ANL5025W *** WARNING:
 ESTIMATE OF      25.637 EXCEEDS "CPU TIME" LIMIT OF    10 CPU SECONDS!

 ANL5026W *** WARNING:
 ESTIMATE OF     1400 EXCEEDS "SERVICE UNIT" LIMIT OF      200 QUNITS !

The following example shows Update (query 13) processing.

 EXPLAIN PLAN SET QUERYNO = 100000013 FOR
 UPDATE  TDT690.L1000
    SET C2 = 'NEW11', C7 = 7654321
    WHERE CIKEY = 100100

 QUERYNO:  100000013   QBLOCKNO:     1   PLANNO:     1   MIXOPSEQ:     0
 PROCESS ->

 UPDATE OPERATION HAS BEEN REQUESTED TO CHANGE THE VALUE OF   2 COLUMNS

  +------------------------------------------------------------------+
  |ANL7001I *** GUIDELINE:                                           |
  |Make sure that your frequently updated columns are being kept     |
  |together in the table row: Db2 logs from the first to last changed|
  |byte. Also, put Varchar at the end of the row: Db2 logs from the  |
  |first changed byte to end of row. Length changes cause the entire |
  |row to log, as length field is kept with the row header. Rows that|
  |are compressed are variable length & logged in compressed format. |
  +------------------------------------------------------------------+

  CLUSTER MATCH IX SCAN
 ---------------------
 IX CREATOR: TDT690
 INDEX NAME: L1000CIN

 VERS:  0  KEY LEN: 6 PADDED:  -  C-ED:  Y C-ING:  Y CLUSRATIO:  99.9995
 FULLKEY CARD:                 99340 FIRSTKEY CARD:                99340
 TYPE: 2  NLEAF PAGES:           412 NLEVELS:  3 UNIQUE: D  DUPLICATE OK
  1 OF  1 COLUMNS ARE MATCHED  CLOSE:  Y  LOCK MODE:  IX  BPOOL: BP10

 KEY      COLUMN NAME          ORDER  TYPE DIST  LEN NULL  COLCARD  DIST#
 ------------------------------------------------------------------------
   1 CIKEY                         A DECIMAL  N    9 Y       99340    10
 THIS IS THE CLUSTERING ("INSERT & LOAD ORDER") INDEX FOR THIS TABLE

  +------------------------------------------------------------------+
  |ANL6020I *** NOTE:                                                |
  |This index is presently designated as allowing "duplicate values".|
  |Make sure this is a nonunique index that does not fall into one of|
  |the following "unique" categories: explicitly unique, primary key,|
  |non-primary RI parent key, unique where not null, unique column   |
  |constraint. Unique indexes have definite advantages whenever they |
  |can be declared by the user, so be sure it contains duplicates.   |
  +------------------------------------------------------------------+

 THIS IS AN "INDEX ONLY" ACCESS: NO DATA PAGES ARE READ FROM THE TABLE

 UPDATE VIA IDX
 --------------
 CREATOR: TDT690
 TABNAME: L1000

 UPDATE PROCESSING APPLIED TO A   4K SEGMENTED TSPACE WITH      3 TABLES
 VERSION:   0  TABLE CONTAINS A TOTAL OF:                31680  4K PAGES
 TABLE ROWS:               100000  COLUMNS:   50 REC LENGTH:  1008 BYTES
 DSSIZE:    0 GB  NUMBER OF MQTS:   0 LOG: Y AVG ROW LENGTH:  1006 BYTES
 TYPE: T  LOCK SIZE: A  TS LOCK MODE:  IX  LOCK PART: N  CLOSE TABLE: Y
 PAGES WITH ROWS:  99%  PCT COMPRESSED:   0% MAX ROWS: 255 BPOOL: BP11
 ENCODE: E  CCSIDS ARE SBCS:   833 DBCS:   834 MIXED:   933  VOLATILE: N
 
 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
 *  QUERY  100000013 WILL REQUIRE    52.35994 SECONDS OF ELAPSED TIME  *
 *  DURING WHICH    46.63751 SECONDS OF CPU TIME WILL BE CONSUMED AND  *
 *  A TOTAL OF        20 PHYSICAL I/O REQUESTS WILL BE ISSUED TO DISK  *
 *  QUNITS      2547 ESTIMATED PROCESSING COST $      10.7093 DOLLARS  *
 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

 ANL5025W *** WARNING:
 ESTIMATE OF      46.638 EXCEEDS "CPU TIME" LIMIT OF    10 CPU SECONDS!

 ANL5026W *** WARNING:
 ESTIMATE OF     2547 EXCEEDS "SERVICE UNIT" LIMIT OF      200 QUNITS !

The following example shows Delete (query 14) processing.

  EXPLAIN PLAN SET QUERYNO = 100000014 FOR
  DELETE FROM  TDT690.L1000
    WHERE CIKEY = 100100 OR RIKEY2 = 100300

 QUERYNO:  100000014   QBLOCKNO:     1   PLANNO:     1   MIXOPSEQ:     0
 PROCESS ->

 A MULTIPLE INDEX OPERATION HAS BEEN REQUESTED TO ACCESS THIS TABLE:
 --------------------------------------------------------------------------------

 QUERYNO:  100000014   QBLOCKNO:     1   PLANNO:     1   MIXOPSEQ:     1
 PROCESS ->

 RANDOM MATCH IX SCAN
 --------------------
 IX CREATOR: TDT690
 INDEX NAME: L1000P2N

 VERS:  0  KEY LEN: 6 PADDED:  N  C-ED:  N C-ING:  N CLUSRATIO:  70.0010
 FULLKEY CARD:                100000 FIRSTKEY CARD:               100000
 TYPE: 2  NLEAF PAGES:           359 NLEVELS:  3 UNIQUE: U  DECLARE UNIQ
  1 OF  1 COLUMNS ARE MATCHED  CLOSE:  Y  LOCK MODE:  IX  BPOOL: BP10

  +------------------------------------------------------------------+
  |ANL6052I *** NOTE:                                                |
  |This index is specified as "Not Padded", allowing storage of a    |
  |varying length index key. Padded indexes use blanks to fill out   |
  |their fixed length keys and are not eligible for Index Only scan. |
  |"Not Padded" indexes do not blank fill CHAR and VARCHAR columns,  |
  |allowing greater flexibility and better use of storage, packing   |
  |more entries into a single Leaf page. Index Only access allowed.  |
  +------------------------------------------------------------------+

 KEY      COLUMN NAME          ORDER  TYPE DIST  LEN NULL  COLCARD  DIST#
 ------------------------------------------------------------------------
   1 RIKEY2                        A DECIMAL  N    9 Y      100000     0

 THIS IS AN "INDEX ONLY" ACCESS: NO DATA PAGES ARE READ FROM THE TABLE

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

 QUERYNO:  100000014   QBLOCKNO:     1   PLANNO:     1   MIXOPSEQ:     2
 PROCESS ->

 CLUSTER MATCH IX SCAN
 ---------------------
 IX CREATOR: TDT690
 INDEX NAME: L1000CIN

 VERS:  0  KEY LEN: 6 PADDED:  -  C-ED:  Y C-ING:  Y CLUSRATIO:  99.9995
 FULLKEY CARD:                 99340 FIRSTKEY CARD:                99340
 TYPE: 2  NLEAF PAGES:           412 NLEVELS:  3 UNIQUE: D  DUPLICATE OK
  1 OF  1 COLUMNS ARE MATCHED  CLOSE:  Y  LOCK MODE:  IX  BPOOL: BP10

 KEY      COLUMN NAME          ORDER  TYPE DIST  LEN NULL  COLCARD  DIST#
 ------------------------------------------------------------------------
   1 CIKEY                         A DECIMAL  N    9 Y       99340    10

 THIS IS THE CLUSTERING ("INSERT & LOAD ORDER") INDEX FOR THIS TABLE

 THIS IS AN "INDEX ONLY" ACCESS: NO DATA PAGES ARE READ FROM THE TABLE
--------------------------------------------------------------------------------

 STEP  3. MULTIPLE INDEX UNION WAS PERFORMED (MU).
--------------------------------------------------------------------------------

 MULTIPLE INDEX OPERATIONS ARE NOW COMPLETE: DATA ACCESS PERFORMED.

 QUERYNO:  100000014   QBLOCKNO:     1   PLANNO:     1   MIXOPSEQ:     3
 PROCESS ->

 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
 *  QUERY  100000014 WILL REQUIRE     8.26157 SECONDS OF ELAPSED TIME  *
 *  DURING WHICH     2.24247 SECONDS OF CPU TIME WILL BE CONSUMED AND  *
 *  A TOTAL OF        33 PHYSICAL I/O REQUESTS WILL BE ISSUED TO DISK  *
 *  QUNITS        15 ESTIMATED PROCESSING COST $       9.6957 DOLLARS  *
 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*