DB2でSQLのアクセスプラン (入門以前編)



準備

アクセスプランの機能を利用するには、少し下準備が必要である。
具体的には以下の2つ。
 ・EXPLAIN表の作成
 ・EXPLAIN DB2環境変数の設定

EXPLAIN表の作成はDDLが用意されているため、それを流すだけだ。

exolain.ddl

EXPLAIN関連のテーブルが作成されている。なんらかのインデックスとかも作られている模様
explain
explain

次に、current explain modeという環境変数を設定する。

exp

各モードの詳しい説明はリンク先の説明に任せるとして、ここでは「実行計画のみ」モードに設定している。
(計画表への挿入は行われるが、SQLは実行されないモード)

これで準備は完了である。


アクセスプラン取得


アクセスプランを取得するには以下のようなコマンドで行う

db2 "EXPLAIN ALL WITH SNAPSHOT FOR SELECT * FROM TBL1"

作成されたプランは以下のコマンドで取り出す

db2exfmt -d TESTDB -s % -e スキーマ名 -n % -w -1 -# 0 -o exp1.txt

マニュアルには見あたりませんが、-s 、-n、-w はLIKE演算子が使える(← ヒドス)
また、列名に日本語があると文字化けしてしまうのでその場合は「-NO_MAP_CHAR」というオプションを付けるらしい。
これもマニュアルには見あたらない。
列名に日本語ということ自体がナンセンスだということへの無言の抵抗なのかもしれない。


exp

exp

コマンドの詳しい説明は、InfoCenter に任せるとして、結果ファイルexp1.txtが目的のブツである。
-e のところはスキーマ名が入る。Schema なんだから -s にしてくれよと思わない?
-sがあるからかぶるんだろうけど。こっちもスキーマか・・。うーむ。

ブツの中身にCPUやらIOのコスト、アクセスプランが取得できる。

exp

プランもクソももうちょっと複雑なSQLじゃないと参考にならないなー。
これはTBSCANだからテーブル検索しちゃってるよー、インデックスつかってないよー、って意味
これをGUI表示する方法もあって、説得資料や、プレゼンとかに使う場合はそっちの方が便利だと思う。
(Visual Explain というツール。これは、準備編で設定したパラメータに
一部制限(〜以上にしておかないとダメ)みたいなのがあるので、使用する場合は参考リンクにあるPDFを
熟読してくだされ。)


後始末編


終わったら、特殊レジストリを戻して、必要であればExplain表からレコードは削除しておこう。

db2 "set current explain mode no"
db2 "delete from [schema名].EXPLAIN_INSTANCE"

exp

このほかのExplain表は、カスケード削除の参照保全により、結果的にすべて消去されるらしい。
って、なんでマニュアルに記載が無いんだよ・・・。

<愚痴>
-w が-1だと最新しか表示されないから、ちゃんと調べない人は
もう、バンバンバンバンとレコードを作って('A`)ウボァ
</愚痴>

参考リンク
http://www-06.ibm.com/jp/software/data/developer/column/accessplan/01_material.html
http://www.atmarkit.co.jp/fdb/rensai/db2bestprac06/db2bestprac06_3.html
http://www-1.ibm.com/support/docview.wss?uid=std3ce147c96ee28bbcc4925712a0007edca
http://www-06.ibm.com/jp/software/data/developer/library/techdoc/pdf/explain_v8.pdf
http://www-06.ibm.com/jp/software/data/developer/library/techdoc/kantandb2.html
http://db2.jugem.cc/?eid=241
http://www.ibm.com/developerworks/jp/db2/library/dataserver/support/06.html
http://db2watch.com/wiki/index.php/%E4%BD%9C%E6%88%90%E3%81%99%E3%81%B9%E3%81%8D%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%82%A2%E3%83%89%E3%83%90%E3%82%A4%E3%82%B9%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF


ブラウザのBACKでお戻り下さい