動的SQLアクセスプラン実行時の詳細情報を表示するには(CUI)

提供: DB2逆引きWiki
移動: 案内, 検索

DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#チューニング編】 【DB2逆引きリファレンス目次#アクセスプラン

目次

前提

  • データベース接続が必要
  • SQLの実行に必要な権限およびEXPLAIN表への参照権限が必要

解説

動的SQLのアクセスプランの実行時の詳細情報は、EXPLAIN表に記録することができます。 EXPLAIN表に記録した情報は、db2exfmtコマンドにより確認することができます。

db2exfmt -d データベース名 [-eスキーマ名] [-o 出力ファイル名 ] [-t]   [-u ユーザー名 パスワード ] -1

-d データベース名
EXPLAIN表が格納されているデータベースの名前を指定します。
-eスキーマ名
EXPLAIN表のスキーマ名を指定します。デフォルトのスキーマにEXPLAIN表が作成されている場合は指定する必要はありません。
-o 出力ファイル名
db2exfmtコマンドの出力を保存するためのファイル名を指定します。
-t
db2exfmtコマンドの出力を標準出力に出力します。
-u ユーザー名 パスワード
データベースの接続にユーザー名とパスワードが必要であれば指定します。
-1
EXPLAIN表内に記録されたアクセスプランの実行情報のうち、もっとも新しいものの情報を出力することを指定します。

手順

  1. 特殊レジスタCURRENT EXPLAIN MODEの値をYESに変更し、EXPLAIN情報を取得するモードに変更します。
    db2 ==> SET CURRENT EXPLAIN MODE YES↓
    


  2. EXPLAIN情報を取得したいSQLを実行します。 以下はemployee表からの全権SELECTを実行している例です。
    db2 ==> SELECT * FROM employee↓
    


  3. 取得したEXPLAIN情報を整形して出力します。 以下はデータベースの名前がsampleである場合の例です。
    $ db2exfmt -d sample -t -1↓
    
    ******************** EXPLAIN INSTANCE ********************
    
    DB2_VERSION: 		08.01.0
    SOURCE_NAME: 		SYSSH200
    SOURCE_SCHEMA: 		NULLID  
    SOURCE_VERSION: 	
    EXPLAIN_TIME: 		2003-11-24-01.38.11.194000 
    EXPLAIN_REQUESTER: 	TA      
    
    Database Context:
    ----------------
    	Parallelism: 		None
    	CPU Speed: 		4.251098e-007
    	Comm Speed: 		1
    	Buffer Pool size: 	250
    	Sort Heap size: 	256
    
    (省略)
    
    Objects Used in Access Plan:
    ---------------------------
    
    	Schema: TA      
    	Name: 	EMPLOYEE
    	Type: 	Table
    
    (省略)
    
    

    出力に含まれる各セクションには、それぞれ以下のような情報が記載されています。

    Database Context
    Explain情報が取得された時点でのデータベースの構成情報。
    Package Context
    動的/静的SQLの種別や分離レベルなどに関するパッケージの情報。
    Original Statement
    実行したSQL文。
    Optimized Statement
    オプティマイザーによりリライトされたSQL文。
    Access Plan
    アクセスプラン。
    Objects Used in Access Plan
    アクセスプランで利用されている表などのオブジェクトの一覧。

注意

  • EXPLAINスナップショット情報はEXPLAIN表に格納されるため、予めEXPLAIN表を作成しておく必要があります。

参照

個人用ツール
名前空間

変種
操作
案内
ツール