DB2 UDBでは、以下のような事象に対応するために、さまざまなモニタ方法が準備されている。
Explainファシリティーは、DB2 UDBに投入されたSQL文にどのようにアクセスプランが作成されたかを記録していく。その使用手順は次のようになる。
Explainデータとは、通常ExplainデータとExplain Snapshotデータである。Visual Explainを使用するためには、Snapshotデータの取得が必須である。なお、Explain可能なSQLはDML(SELECT/INSERT/UPDATE/DELETE/VALUES)のみ。
Explainデータの収集には、以下のような方法がある。
EXPLAIN文は、単一の動的SQL文のアクセスプランの収集に使用する。その構文は以下の通り。
EXPLAIN (ALL | PLAN | PLAN SELECTION) [(WITH | FOR ) SNAPSHOT] FOR dml-statement
EXPLAIN文の実行のためにはExplain表に対するINSERT特権が必要である。
一連の動的SQL全てについてExplain情報を取得する場合には、特殊レジスタを設定することで、後続の動的SQL文全てを収集の対象とすることが出来る。
SET CURRENT EXPLAIN MODE [NO | YES | EXPLAIN] SET CURRENT EXPLAIN SNAPSHOT [NO | YES | EXPLAIN]
パッケージから使用されるSQL文についてのExplain情報を取得するには、バインドオプションとして指定する。
BIND ....... [ EXPLAIN (NO | YES | ALL) ] [ EXPLSNAP (NO | YES | ALL) ]
dynexpln・db2explnユーティリティは、それぞれ動的・静的SQLのアクセスプランを作成する。但し、収集できる情報は、Explain表を用いる方が多くなる。
Explainデータは、アクセスの順番や、処理の内容(スキャン方法や結合・ソート方法)、そしてその処理コストを含む。
スナップショット・モニタは、各種のデータベース資源の利用状況についての情報を収集し、適当な間隔で出力するためのものである。情報を収集できる資源とは以下のようなものである。
グループ | スイッチ名 | 提供される情報 |
---|---|---|
分類 | SORT | 使用されたヒープ数やオーバーフロー |
ロック | LOCK | 使用中数・デッドロック数 |
表 | TABLE | 読み書きの行数 |
バッファプール | BUFFERPOOL | 読み書きの回数、所要時間 |
作業単位 | UOW | 開始・終了時刻、完了状況 |
SQL文 | STATEMENT | 開始・停止時刻、文の識別 |
これらについての情報収集は、その資源ごとに、インスタンスレベルまたはアプリケーションレベルで切り替えることが出来る。インスタンスレベルで設定するためには、UPDATE DBM CFG文を使用し、アプリケーションレベルで切り替えるには、UPDATE MONITOR SWITCHES文を使用する。
UPDATE DBM CONFIGURATION USING DFT_MON_resources (ON | OFF) UPDATE MONITOR SWITCHES USING resources (ON | OFF)
これらの実行のためには、SYSADM, SYSCTRL, SYSMAINTのいずれかの権限が必要となる。
このようにして収集されたデータは、GET SNAPSHOTコマンドで参照できる。なお、ビジュアル・パフォーマンス・モニタを使用すると、これらのスナップショットを自動的に一定間隔で発行し、その推移を見ることが出来る。
GET SNAPSHOT FOR resources ON db-alias
これらデータのほとんどはカウンタであり、それぞれが停止状態から活動状態に移ったときに値が初期化されるが、RESET MONITORコマンドで値をリセットすることが出来る
RESET MONITOR ( FOR DATABASE db-alias | ALL )
スナップショット・モニタは、期間中に発生したイベントをカウントするものであるのに対し、イベント・モニタは、データベースに特定のイベントやトランザクションが発生した場合に、それを記録するものである。イベント・モニタで記録できるイベントには、以下のようなものがある。
これらのイベントの記録先は、データベース・オブジェクトとして、DDL文によって作成される。この作成には、SYSADM, DBADMのいずれかの権限が必要である。その構文は以下の通り。
CREATE EVENT MONITOR object-name FOR event-name WRITE TO FILE output directory MAXFILES file-num MAXFILESIZE file-size
このようにして作成したイベント・モニタは、SET EVENT MONIOR文を用いて活動状態を切り替える。"1"が活動開始、"0"が活動停止である。
SET EVENT MONITOR object-name STATE = (1 | 0)
イベント・モニタ・ファイルはバイナリファイルであり、そのままでは可読ではない。db2evmon(コマンドライン)・db2eva(GUI)といったツールを用いて解析を行う。
トップページに