【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表内に記録されたアクセスプランの実行情報のうち、もっとも新しいものの情報を出力することを指定します。
手順
-
特殊レジスタCURRENT EXPLAIN MODEの値をYESに変更し、EXPLAIN情報を取得するモードに変更します。
db2 ==> SET CURRENT EXPLAIN MODE YES↓ -
EXPLAIN情報を取得したいSQLを実行します。 以下はemployee表からの全権SELECTを実行している例です。
db2 ==> SELECT * FROM employee↓ -
取得した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: TADatabase 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表を作成しておく必要があります。