記憶域常駐データベース・モニター/要約 SQL パフォーマンス・モニターの活用

こちらでも SQL パフォーマンス・モニター/データベース・モニターにちょっと触れましたが、iSeries でも Oracle のかつての STATSPACK のようにできるだけ常時データベース稼動状況のモニタリングをできるようにしたいと思って何かできないかちょっと調べてみました。

iSeries 上のデータベース状況監視というとやはりSQL パフォーマンス・モニター/データベース・モニターということになりますが、以前触れたように大きく二つの種類 (記憶域常駐/STRDBMON) が存在します。

「データベース・モニターを使用すると、かなりの CPU およびディスク装置オーバーヘッドが使用中に生成される可能性があります」とインフォメーション・センターに記述がありますが、この「データベース・モニター」は STRDBMON の方を指しています。
一方、記憶域常駐データベース・モニターについては以下のような記述があります。

記憶域常駐のデータベース・モニターは、データベース・パフォーマンスをモニターするためのもう 1 つの方法を提供するツールです。
このツールは、SQL パフォーマンス・モニターのモニターのみを意図するもので、プログラマーやパフォーマンス分析者の役に立ちます。モニターは、API のセットの手助けを得て、データベース・モニター情報を取り、記憶域内でユーザーのためにそれらを管理します。この記憶域常駐のモニターは、結果のテーブル・サイズだけでなく、CPU のオーバーヘッドを低減します。
データベース・モニターの開始 (STRDBMON) は、パフォーマンス情報の収集時にサーバー・リソースを拘束します。
このオーバーヘッドの主因として、パフォーマンス情報が収集されるときにそれが直接データベース・テーブルに書き込まれることが考えられます。記憶域ベースの収集モードは、パフォーマンスの結果を記憶域内で収集、管理することによって消費されるサーバー・リソースを低減します。
これによって、モニターは、サーバー全体のパフォーマンスへの (または個々の SQL ステートメントのパフォーマンスへの) 影響を最小にしてデータベースのパフォーマンス統計を収集することができます。
モニターは、STRDBMON モニターとほとんど同じ情報を収集しますが、パフォーマンス統計を記憶域内に保持します。ある程度の明細を犠牲にして、情報が同一の SQL ステートメント用に要約されるので、収集した情報量が削減されます。この目的は、統計をできるだけ迅速に記憶域に取り込むことにありますが、一方、データの操作や変換はパフォーマンス・データが分析用の結果テーブルにダンプされるまで遅らせます。
記憶域常駐のモニターが、STRDBMON モニターに取って代わるわけではありません。モニターでは明細が失われて SQL ステートメントの十分な分析ができなくなる状況が生じます。このような場合には、今までどおり STRDBMON モニターを使用する必要があります。
記憶域常駐のモニターは、パフォーマンス情報を一連の行様式に結合し、蓄積して記憶域内でこのデータを管理します。これは、固有の SQL ステートメントごとに、そのステートメントの実行のたびに情報が累積され、明細情報が収集されるのは、最も費用のかかるステートメントの実行に対してだけであることを意味します。

さらにインフォメーション・センターの他の場所にもあるように、この記憶域常駐モニターでは↓のような情報を取得することができます。
内容をチェックしてみると、分析の出発点としては申し分のない情報を取ることができることがわかります。

要約モニターを作成する場合、一定の種類の情報が常に収集されています。この情報には、要約情報、SQL ステートメント情報、およびホスト変数情報が含まれます。また、次のタイプの情報を収集するよう選択できます。
表走査および到着順
モニターされたジョブの表走査データに関する情報を含めるために選択します。大きいテーブルのテーブル走査には、時間がかかることがあります。 SQL ステートメントが長時間実行される場合には、それは、パフォーマンス改善のために索引が必要であることを示している可能性があります。
使用される索引
索引がモニターされたジョブに使用された方法に関する情報を含めるために選択します。この情報を使用して、照会のパフォーマンス改善のために、いずれかの永続索引が使用されたかどうかを迅速に知ることができます。通常、最善の照会パフォーマンスを達成するためには、永続索引が必要になります。この情報を使用して、モニターされたステートメント中で永続索引が使用された頻度を判別することができます。テーブルに対する挿入、更新、および削除のパフォーマンスを改善するためには、まったく使用されないか、めったにしか使用されない索引を除去する必要があります。索引をドロップする前に、索引が Query 最適化プログラムにより統計上のソースとして使用されているか判別してください。
索引の作成
モニターされたジョブの索引の作成に関する情報を含めるために選択します。結合の実行、両方向スクロール・カーソルのサポート、ORDER BY または GROUP BY の実施などいくつかの理由から、一時索引の作成が必要となることがあります。作成される索引には、照会に適合する行のキーしか入れることができません (このような索引は疎索引として知られています) 。多くの場合に、この索引作成は完全に正常であり、照会を実行する最も効率的な方法です。しかしながら、行数が多い場合、あるいは同じ索引が反復作成される場合には、この照会のパフォーマンス改善のために、永続索引を作成することができます。これは、索引がアドバイスされたどうかとは関係のない事実です。
データ・ソート
モニターされたジョブが実行するデータ・ソートに関する情報を含めるために選択します。 SQL ステートメント中の大規模結果セットのソートには、時間がかかる可能性があります。ある場合には、索引を作成することによって、ソートの必要性がなくなることがあります。
一時ファイルの使用
モニターされたジョブにより作成された一時ファイルに関する情報を含めるために選択します。 SQL ステートメントによっては、一時結果が必要になる場合があります。一時結果に挿入される結果セットが大きい場合には、一時結果が必要な理由の調査が必要になる可能性があります。ある場合には、SQL ステートメントを変更して、一時結果が必要ないようにすることができます。たとえば、カーソルが INSENSITIVE 属性を持っている場合には、一時結果が作成されます。キーワード INSENSITIVE を除去すると、通常は一時結果の必要性がなくなりますが、アプリケーションは、データベース・テーブルで変更が起こると、変更内容を参照することになります。
考慮された索引
モニターされたジョブに対して考慮された索引に関する情報を含めるために選択します。この情報は、ある索引が照会で使用されているかを判別する際に役立ちます。ある索引が考慮されているが、使用されていない場合、その索引を書き直すか、ドロップする必要がある場合があります。索引をドロップする前に、索引が Query 最適化プログラムにより統計上のソースとして使用されているか判別してください。
副選択処理
副選択処理に関する情報を含めるために選択します。この情報は、複合 SQL ステートメントの最もコストの高い副照会を示します。
モニターするジョブを選択するか、すべてのジョブをモニターするよう選択できます。システム上で、モニターのインスタンスを複数、同時に実行することができます。要約モニターの場合、すべてのジョブをモニターできるモニター・インスタンスは 1 つだけ持つことができます。また、同一ジョブに対して、2 つのモニターを持つことはできません。すべてのジョブの情報を収集する場合、モニターは先に開始済みのジョブ、または、モニターが作成された後に開始された新規ジョブの情報を収集します。 「選択されたジョブ」リストでジョブを選択、削除することにより、このリストを編集できます。

ということで、この記憶域常駐型 データベース・モニターまたは要約 SQL パフォーマンス・モニターがデータベース稼動状況のベースライン収集ツールの候補として挙げられそうです。

ただし、iSeries ナビゲーターから実行することしかできず、CL 等を使ってプログラミングするためには新たに System API を使用してツールを作成しなくてはならない、という問題があります。
この問題について解決したツールが IBM のサイトにありました。

http://www-03.ibm.com/servers/eserver/iseries/db2/files/memorymonitor.zip

以下に、このツールの導入の仕方と使い方の簡単な紹介をしてみたいと思います。


導入

まず、zip ファイルを解凍すると保管ファイルが出てきますので、その内容を復元してください。

SQL パフォーマンス・モニター実行状況の確認

CHKSQLMON というコマンドがあるので、実行してみましょう。

SQL パフォーマンス・モニターが稼動していないときには↓のようなメッセージが表示されます。
(稼動している場合のメッセージについてはこちらをご覧ください)

SQL パフォーマンス・モニターの開始

iSeries ナビゲーターからしか開始ができなかった記憶域常駐型 データベース・モニター/要約 SQL パフォーマンス・モニターを 5250 画面/CL プログラムから STRSQLMON コマンドを使用して開始できるようになっています。

首尾よく開始されると↓のようなメッセージが表示されます。

iSeries ナビゲーターから開始した場合、「すべてのジョブ」を指定すると *SYSBAS に存在するライブラリーにしかファイルの書き出しを行えません。
このコマンドを使用した場合は、IASP に存在するファイルに書き出しを行うことも可能になっています。

収集結果の書き出し

ほぼリアルタイムに収集結果を書き出していく STRDBMON/詳細 SQL パフォーマンス・モニターと違って、記憶域常駐型 データベース・モニター/要約 SQL パフォーマンス・モニターは終了時もしくはダンプ実行時にしか収集結果をファイルに書き出しません。

開始させておいて、時々以下の DMPSQLMON コマンドで内容を書き出してやればいいわけです。

ダンプを行うと以下のようなメッセージが出て、

以下のような 10 個のファイルが作成されるようになっています。それぞれの内容はインフォメーション・センターに記述があります。

取得内容の分析

iSeries ナビゲーターに書き出したファイルをインポートして、取得内容を分析することも可能です。

スキーマ (ライブラリー) を指定して、中のファイルをデータセットに追加していきます。
「タイプ」に "要約" を指定することを忘れないようにしてください。

データセットにすべて追加できた状態で「OK」ボタンを押します。

インポートした収集結果に対して、通常の iSeries ナビゲーターのインターフェイスで分析を行うことができます。

モニターの終了

モニターを終了させるには ENDSQLMON コマンドを使用します。

[Top Pageに戻る]

Ads by TOK2