DB2/400 のトレース機能 (DBOP Trace)

いくつか IBM のサイトを見ていて繋ぎ合わせてみてわかったのですが、ある SQL についてデータベースがどういうプランをどうやって作成し、実行したか、を見ることができます。

あまり詳しくは書きませんが、以下のようなオプションをセットして SQL を実行させると、出力が生成されますので、その内容を見るとけっこういろんなことがわかります。たとえば CPU のコストやメモリーサイズ、レコード数などいろんなことが考慮に入っていますし、どんなことを統計マネージャーに問い合わせているか、といったようなことも載っています。この膨大な内容を見れば最適化の過程がとても精密なことがわかります。
画面ショットを載せておきますが、こんな出力をひとつ見てみたって MySQL や Postgres なんぞは言うに及ばず、大概のデータベースより相当高度なことを DB2/400 が行っているということが理解できるのではないでしょうか。

INSERT INTO QAQQINI VALUES('MESSAGES_INFORMATIONAL', '*FULL', NULL)
INSERT INTO QAQQINI VALUES('MESSAGES_DESTINATION', '*IFS', NULL)
INSERT INTO QAQQINI VALUES('REOPTIMIZE_ACCESS_PLAN', '*FORCE', NULL)
UPDATE QAQQINI SET QQVAL = '*FORCE' WHERE QQPARM='REOPTIMIZE_ACCESS_PLAN'

こんなオプションも個々に使用できるようです。

MESSAGES_INFORMATIONAL *DETAIL
MESSAGES_COST *FULL
MESSAGES_FINAL_PLAN *DETAIL
MESSAGES_PLAN_IMPLEMENTATION *BASIC

こんなふうに SQL を実行します。

実行後、/tmp/sqe の下に、ユーザー名とジョブ番号を元にした名前のディレクトリが作成され、

その中に "DBOPTRACE" + タイムスタンプで名前をつけられたファイルが生成されます。
ちなみに、けっこう大量です。

内容はこんなかんじです。

[Top Pageに戻る]

Ads by TOK2