DB2 - Problem description
| Problem IC71993 | Status: Closed |
SELECT SQL STATEMENT WILL RETURN DIFFERENT RESULTS BY SETTING CURRENT DEGREE =1 AND CURRENT DEGREE =ANY | |
| product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
| Problem description: | |
The problem can only occur when INTRA_PARALLEL is ON and the
query degree is > 1. The SQL statement itself must have DISTINCT
operation above non-pushdownable predicate, for example,
SELECT DISTINCT ... GROUP BY ... HAVING COUNT(column) > 1 .
In such cases the optimizer may choose to do a UNIQUE SORT and
place it
before the predicate is applied.
The problem can be determined by using db2exfmt tool. The steps
are listed as follows:
1) db2 set current explain mode explain
2) db2 -tvf <sql_script> (eg: sql.ddl)
3) db2 set current explain mode no
4) db2exfmt -d <DB_NAME> -g TIC -w -1 -n % -s % -# 0 -o
<FILE_NAME> (eg: exfmt.txt)
The similar following entries will be written in the formatted
explain table file in step 4.
In database context section, the intra-parallelism is set on. In
access plan graph section, the Query Degree is >1 .
The uniqueness flag of the SORT(13) operator before the
FILTER(11) predicate is set to TRUE.
Database Context:
----------------
Parallelism: Intra-Partition Parallelism
Access Plan:
-----------
Total Cost: 1.82934e+06
Query Degree: 8
FILTER
( 11)
731537
33459
|
453941
TBSCAN
( 12)
723457
33459
|
453941
SORT
( 13)
679313
32222
Extended Diagnostic Information:
--------------------------------
11) FILTER: (Filter)
Cumulative Total Cost: 731537
Cumulative CPU Cost: 1.68065e+10
Cumulative I/O Cost: 33459
Cumulative Re-Total Cost: 52222.8
Cumulative Re-CPU Cost: 1.27465e+09
Cumulative Re-I/O Cost: 1237
Cumulative First Row Cost: 721993
Estimated Bufferpool Buffers: 3047
Predicates:
----------
19) Residual Predicate
Comparison Operator: Less Than (<)
Subquery Input Required: No
Filter Factor: 0.333333
Predicate Text:
--------------
(1 < Q7.$C1)
13) SORT : (Sort)
Cumulative Total Cost: 679313
Cumulative CPU Cost: 1.55318e+10
Cumulative I/O Cost: 32222
Cumulative Re-Total Cost: 0
Cumulative Re-CPU Cost: 0
Cumulative Re-I/O Cost: 1237
Cumulative First Row Cost: 679313
Estimated Bufferpool Buffers: 5528
Arguments:
---------
DUPLWARN: (Duplicates Warning flag)
FALSE
NUMROWS : (Estimated number of rows)
453942
PARTCOLS: (Table partitioning columns)
1: Q8."C1"
ROWWIDTH: (Estimated width of rows)
16
SORTKEY : (Sort Key column)
1: Q7."C1"(A)
SORTTYPE: (Intra-Partition parallelism sort type)
PARTITIONED
SPILLED : (Pages spilled to bufferpool or disk)
2481
TEMPSIZE: (Temporary Table Page Size)
4096
UNIQUE : (Uniqueness required flag)
TRUE | |
| Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * ALL Platforms * **************************************************************** * PROBLEM DESCRIPTION: * * The problem can only occur when INTRA_PARALLEL is ON and the * * query degree is > 1. The SQL statement itself must have * * DISTINCT * * operation above non-pushdownable predicate, for example, * * SELECT DISTINCT ... GROUP BY ... HAVING COUNT(column) > 1 * * . * * In such cases the optimizer may choose to do a UNIQUE SORT * * and * * place it * * before the predicate is applied. * * * * * * The problem can be determined by using db2exfmt tool. The * * steps * * are listed as follows: * * * * 1) db2 set current explain mode explain * * * * 2) db2 -tvf <sql_script> (eg: sql.ddl) * * * * 3) db2 set current explain mode no * * * * 4) db2exfmt -d <DB_NAME> -g TIC -w -1 -n % -s % -# 0 -o * * <FILE_NAME> (eg: exfmt.txt) * * * * The similar following entries will be written in the * * formatted * * explain table file in step 4. * * In database context section, the intra-parallelism is set * * on. In * * access plan graph section, the Query Degree is >1 . * * The uniqueness flag of the SORT(13) operator before the * * FILTER(11) predicate is set to TRUE. * * * * Database Context: * * ---------------- * * Parallelism: Intra-Partition Parallelism * * * * * * Access Plan: * * ----------- * * Total Cost: 1.82934e+06 * * Query Degree: 8 * * * * FILTER * * ( 11) * * 731537 * * 33459 * * | * * 453941 * * TBSCAN * * ( 12) * * 723457 * * 33459 * * | * * 453941 * * SORT * * ( 13) * * 679313 * * 32222 * * * * Extended Diagnostic Information: * * -------------------------------- * * 11) FILTER: (Filter) * * Cumulative Total Cost: 731537 * * Cumulative CPU Cost: 1.68065e+10 * * Cumulative I/O Cost: 33459 * * Cumulative Re-Total Cost: 52222.8 * * Cumulative Re-CPU Cost: 1.27465e+09 * * Cumulative Re-I/O Cost: 1237 * * Cumulative First Row Cost: 721993 * * Estimated Bufferpool Buffers: 3047 * * * * Predicates: * * ---------- * * 19) Residual Predicate * * Comparison Operator: Less Than (<) * * Subquery Input Required: No * * Filter Factor: 0.333333 * * * * Predicate Text: * * -------------- * * (1 < Q7.$C1) * * * * * * 13) SORT : (Sort) * * Cumulative Total Cost: 679313 * * Cumulative CPU Cost: 1.55318e+10 * * Cumulative I/O Cost: 32222 * * Cumulative Re-Total Cost: 0 * * Cumulative Re-CPU Cost: 0 * * Cumulative Re-I/O Cost: 1237 * * Cumulative First Row Cost: 679313 * * Estimated Bufferpool Buffers: 5528 * * * * Arguments: * * --------- * * DUPLWARN: (Duplicates Warning flag) * * FALSE * * NUMROWS : (Estimated number of rows) * * 453942 * * PARTCOLS: (Table partitioning columns) * * 1: Q8."C1" * * ROWWIDTH: (Estimated width of rows) * * 16 * * SORTKEY : (Sort Key column) * * 1: Q7."C1"(A) * * SORTTYPE: (Intra-Partition parallelism sort type) * * PARTITIONED * * SPILLED : (Pages spilled to bufferpool or disk) * * 2481 * * TEMPSIZE: (Temporary Table Page Size) * * 4096 * * UNIQUE : (Uniqueness required flag) * * TRUE * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 V97 fix pack 5 * **************************************************************** | |
| Local Fix: | |
This can be worked around by turning INTRA_PARALLEL OFF, setting the DB config parameter DFT_DEGREE = 1, setting the DBM config parameter MAX_QUERYDEGREE = 1 or setting the special register CURRENT DEGREE 1. | |
| available fix packs: | |
DB2 Version 9.7 Fix Pack 5 for Linux, UNIX, and Windows | |
| Solution | |
The fix will be included in db2_v97fp5 | |
| Workaround | |
This can be worked around by turning INTRA_PARALLEL OFF, setting the DB config parameter DFT_DEGREE = 1, setting the DBM config parameter MAX_QUERYDEGREE = 1 or setting the special register CURRENT DEGREE 1. | |
| Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 18.10.2010 02.01.2012 02.01.2012 |
| Problem solved at the following versions (IBM BugInfos) | |
9.7.FP5 | |
| Problem solved according to the fixlist(s) of the following version(s) | |
| 9.7.0.5 |
|