Db2expln analysiert den Zugriffspfad für eine bestimmte DB2-Abfrage.
Verwenden Sie db2expln für die DB2-Abfrageoptimierung. Sobald Sie eine langsam laufende Abfrage identifiziert haben, die einen Engpass verursacht, verwenden Sie diesen Prozess, um den Zugriffspfad zu analysieren.
Ein syntaktisches Beispiel:
db2expln -d books -f myquery.sql -z \; -g -o explain.txt
-d <db>
-f <explain datei>
-z terminierender Zeilenende Charakter
-g Rekonstruiert das ursprüngliche Plandiagramm des Optimierers (wie von Visual Explain präsentiert)
-o Name der Ausgabedatei
Die Datei myquery.sql enthält den folgenden Inhalt:
select * from books where publisher_id <6 |
db2expln -d books -f myquery.sql -z \; -g -o explain.txt DB2 Universal Database Version 11.5, 5622-044 (c) Copyright IBM Corp. 1991, 2017 |
Der Output für meine Abfrage ist wie folgt:
DB2 Universal Database Version 11.5, 5622-044 (c) Copyright IBM Corp. 1991, 2017
Licensed Material – Program Property of IBM
IBM DB2 Universal Database SQL and XQUERY Explain Tool
******************** DYNAMIC ***************************************
==================== STATEMENT ==========================================
Isolation Level = Cursor Stability
Blocking = Block Unambiguous Cursors
Query Optimization Class = 5
Partition Parallel = No
Intra-Partition Parallel = No
SQL Path = "SYSIBM", "SYSFUN", "SYSPROC", "SYSIBMADM",
"DB2INST1"
Statement:
select *
from books
where publisher_id <6
Section Code Page = 1208
Estimated Cost = 116,269806
Estimated Cardinality = 313,439789
Access Table Name = DB2INST1.BOOKS ID = 2,6
| Index Scan: Name = SYSIBM.SQL210601170042110 ID = 1
| | Regular Index (Not Clustered)
| | Index Columns:
| | | 1: BOOK_ID (Ascending)
| #Columns = 7
| Skip Inserted Rows
| Avoid Locking Committed Data
| Currently Committed for Cursor Stability
| Evaluate Predicates Before Locking for Key
| #Key Columns = 0
| | Start Key: Beginning of Index
| | Stop Key: End of Index
| Data Prefetch: Sequential(0), Readahead
| Index Prefetch: Sequential(7), Readahead
| Lock Intents
| | Table: Intent Share
| | Row : Next Key Share
| Sargable Predicate(s)
| | #Predicates = 1
| | Return Data to Application
| | | #Columns = 7
Return Data Completion
End of section
Optimizer Plan:
Rows
Operator
(ID)
Cost
313,44
RETURN
( 1)
116,27
|
313,44
FETCH
( 2)
116,27
/ \
1091 1091
IXSCAN Table:
( 3) DB2INST1
47,6554 BOOKS
|
1091
Index:
SYSIBM
SQL210601170042110