...

簡単シリーズ スナップショット・モニター編 スナップショット・ モニター編

by user

on
Category: Documents
140

views

Report

Comments

Transcript

簡単シリーズ スナップショット・モニター編 スナップショット・ モニター編
簡単シリ
簡単シリーズ
スナップショ
スナップショット・モニター編
モニター編
2002/03
SS&WSCC#1
目次
データベース・
モニター・
ツール
スナップショット・モニター
スナップショット・モニターの取得
スナップショット・モニター・コマンド
スナップショット・モニターの取得手順
スナップショット・モニター情報の出力例 ※ この資料ではDB2 UDB for Windows V7.2 + FIXPACK5の環境でテストした結果を載せています。
Systems Solution & Web Server Competence Center No.1 DM Group
1-2
データベース・モニター・ツール
DB2が提供する主なモニター・
ツール
SQL文がDB2によって
どのように処理
されるかが知りたい
EXPLAIN
デッドロックの原因は?
アプリケーションのどこに時間
がかかっているのだろう?
イベント・モニター
スナップショット・
モニター
DB2の現在の活動状態
を知りたい
Systems Solution & Web Server Competence Center No.1 DM Group
データベース・モニター・ツール
活動中のデータベースの状態をモニターしたり解析するためにDB2が提供する主なツールをご紹介します。
EXPLAIN
SQL文の実行経路に関する情報を取得します。
イベント・モニター
特定の時間内(
モニターをかけている間)
に発生したイベントを記録します。
各イベントの完了時に活動情報を提供します。
収集可能なイベントには以下のようなものがあります。
デッドロック
SQL文の実行
トランザクションの完了
データベースへの接続
スナップショット・モニター
スナップショット・モニターは、リクエストが出された特定の時点のデータベースの活動状態に関する情報を提供します。発生
した事象の回数や処理時間の累計、資源の現在の値、最大使用量等が出力されます。
出力される情報には以下のようなものがあります。
バッファープール等資源の使用状況
現在データベースに接続している数
デッドロックの発生数
CPU使用時間
Systems Solution & Web Server Competence Center No.1 DM Group
3-4
スナップショット・モニター
スナップショット・モニターでは様々なレベルの切り口で情報を取得することができますので、必要に応じて選択する必要があります。
主なスナップショット・モニター出力の内容
データベース・スナップショット
データベース・ロック・スナップショット
・ロック関連情報
・
・
・
アプリケーション・スナップショット
・稼動中のアプリケーション毎の
ロック関連情報
アプリケーションがロックを保持
している資源
・ソート関連情報
・
・
・
・稼動中のアプリケーション毎の情報
ロック関連情報
ソート関連情報
バッファープール関連情報
SQL関連情報
キャッシュ関連情報
・バッファープール関連情報
・
・
・
バッファー・スナップショット
表スペース・
スナップショット
・
バッファープール毎の情報
・表スペース毎の
バッファープール情報
bufferpool1
・
・
・
bufferpool2
・
・
・
・SQL関連情報
・
・
・
・キャッシュ関連情報
・
・
・
tablespace1
・
・
・
tablespace2
・
・
・
tablespace3
・
・
・
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニター
スナップショット・モニターは、データベース・マネージャーやデータベース・オブジェクトに関する様々なレベルの情報を収集することができ
ます。
データベース・
マネージャー
データベース(
ローカル、リモート、DCS)
アプリケーション(ローカル、リモート、DCS)
FCM(
DB2エージェント間の内部通信の場合)
バッファープール
表スペース
表
ロック
動的SQL文
スナップショット・モニターでは様々なレベルの切り口で情報を取得することができますので、必要に応じて選択する必要があります。
ここでは、よく取得される情報とその用途を一覧します。
GET SNAPSHOT FOR xx
用途
DATABASE
データベース全般の状態を把握可能。
DATABASE全体を確認後、APPLICATIONSやBUFFERPOOLSなど特
定の情報について詳細を確認していく
APPLICATIONS
BUFFERPOOLS
LOCKS
TABLESPACES
稼働中のアプリケーション毎のバッファープールやキャッシュ等資源の
使用状況やSQLの発行数、CPU時間を確認可能
バッファープール毎の使用状況を確認可能
データベースに接続中のアプリケーションが保持しているロック資源を
確認可能
表スペース毎のバッファープール使用状況を確認可能
注)
APPLICATIONSで取得される情報は、BUFFERPOOLSやLOCKSの情報の基本的な部分を含んでいますが、一度に取得
できる情報が非常に多いので、特定の情報だけが必要なときは個々に取得します。
Systems Solution & Web Server Competence Center No.1 DM Group
5-6
スナップショット・モニターの取得
スナップショット・モニターはコマンドやコントロール・センターから使用できます。
スナップショット・モニターを使用するには、SYSADM,SYSCTRL,SYSMAINTの権限が必要となります。
モニタースイッチはインスタンス全体または各セッション毎に制御できます。
イベント・モニターには影響を与えません。
スナップショット・モニターを操作するために以下のコマンドが提供されています。
GET MONITOR SWITCHES
UPDATE MONITOR SWITCHES
RESET MONITOR
GET SNAPSHOT FOR
上記以外にデータベース・
マネージャー構成パラメータに対して操作を行うコマンドもあります。
出力項目の種類
カウンター:
値が累積されていく項目
リセット・コマンドにて値の初期化が可能
ゲージ:
現在の値を示す項目
ウォーターマーク:
最大/最小値を示す項目
リセット不可能
時間:活動に費やした秒数/マイクロ秒数
スナップショットを取得するには同一セッション内で一連の操作を実行する必要があります。
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニターの取得
DB2では常にデフォルトでいくらかの基本情報は収集されていますが、モニター・スイッチをオンにすると、各レベルについて、より
多くのデータを収集することができます。
グループ
提供される情報
モニター・スイッチ
DBM CFGパラメータ
ソート
使用されたヒープ数、オーバーフロー、ソート・
パフォーマンス
SORT
DFT_MON_SORT
ロック
ロックを保持している資源、ロック待ち情報
LOCK
DFT_MON_LOCK
表
読み/書きされた行数
TABLE
DFT_MON_TABLE
バッファー・プール
読み/書き回数、所要時間
BUFFERPOOL
DFT_MON_BUFPOOL
作業単位
開始/終了時刻、完了状況
UOW
DFT_MON_UOW
SQL文
開始/終了時刻、文の識別
STATEMENT
DFT_MON_STMT
スナップショット・モニターのレベルとスイッチの組合せによって、スナップショットを取得したときに提供される情報は異なります。
適切なモニター・スイッチがオンになっていないと、必要な情報が表示されないことがあります。
モニター・
スイッチはインスタンス・レベルと各セッション・レベルで制御ができます。
データベース・
マネージャー構成パラメータの値を変更した場合、通常、その値を有効にするためにはインスタンスの停止/再始動が必
要ですが、モニター・
スイッチ関連パラメータについては動的変更が可能です。
動的変更が発生しても既存のスナップショット・アプリケーションへの影響はありません。 スイッチの新しいデフォルト値を適用するため
には、 モニター・
アプリケーションを終了してから、再び接続を確立する必要があります。
Systems Solution & Web Server Competence Center No.1 DM Group
7-8
スナップショット・モニターの期間
データベース・
マネージャーによって収集される情報が初期設定されるタイミングは以下のようになっています。
スイッチで制御されるカウンター
そのモニター・スイッチをオンにしたとき
該当オブジェクトが活動状態になったとき
アプリケーション・レベル・モニターが使用され、アプリケーションがデータベースに接続したとき
データベース・
レベル・
モニターが使用され、最初のアプリケーションが接続したとき
表レベル・モニターが使用され、表が最初にアクセスされたとき
バッファープール・レベル・モニターが使用され、表スペースが最初にアクセスされたとき
データベース・
オブジェクト・レベルの全ての活動が終了した時点
データベースへの接続が全てクローズされると、データベースレベルの情報はクリアされます
全てのデータベースが切断されると、ステートメント・キャッシュがクリアされます
データを残したい場合は、ACTIVATE DATABASEを実行しておく必要があります
データベース・スナップショット
データベース名
= SAMPLE
データベース・パス
= C:¥DB2¥NODE0000¥SQL00003¥
入力データベース別名
= SAMPLE
データベース状況
= Active
カタログ・ノード番号
=0
カタログ・ネットワーク・ノード名
= N0027368
データベース・サーバーで実行中のオペレーティング・システム = NT
データベースのロケーション
= ローカル
最初のデータベース接続タイム・スタンプ
= 03/22/2002 11:13:52.712504
最後のリセット・タイム・スタンプ
= 03/22/2002 15:07:26.230629
最後のバックアップ・タイム・スタンプ
=
スナップショット・タイム・スタンプ
= 03/22/2002 15:07:42.928799
Systems Solution & Web Server Competence Center No.1 DM Group
ブランク・
ページ
Systems Solution & Web Server Competence Center No.1 DM Group
9-10
データベースへの最初の接続または
ACTIVATE DATABASEコマンドの実行時刻
RESET MONITORコマンドによりカウンターが
リセットされた時刻
スナップショット・モニターが取得された時刻
スナップショット・コマンドの影響範囲
スナップショット・モニターに対してコマンドを実行した時の影響範囲についてみてみましょう。
※Tnは時間の経過(コマンド入力順序)を表しています
スイッチリスト
コピー
bufferpool=off
・・・
T0 セッション1開始
スイッチリスト
bufferpool=on
・
・
・
DBMスイッチリスト コピー
bufferpool=off
スイッチリスト
lock=off
bufferpool=off
・・・
・・・
uow=off
T0 セッション2開始
T1 update monitor switches
using bufferpool on
T2 select * from org
T3 get snapshot for database
on sample
T3 get snapshot for database
on sample
seelct実行:1 バッファープール情報:○
データ論理読取:
11
T4 update monitor switches
using bufferpool on
T5 select * from project
T6 get snapshot for database
on sample
T7 reset monitor all
select実行 2 バッファープール情報:○
データ論理読取:15
T6 get snapshot for database
on sample
T8 select * from sales
seel ct実行 1 バッファープール情報:○
データ論理読取:4
seelct実行:1 バッファープール情報:×
スイッチリスト
bufferpool=on
・
・
・
select実行:2 バッファープール情報:○
データ論理読取:
4
T9 get snapshot for database
on sample
T9 get snapshot for database
on sample
データベース:
SAMPLE
seel ct実行:3 バッファープール情報:○
データ論理読取:8
各セッションにおけるパラメータの変更は他のセッションに影響を与えません
DBMスナップショット・モニター値のコピーを、それぞれ独自に所有しています。
但し、DBMレベルでオフになっているモニターは、各セッションのモニターのオンに連動してDBMのモニターがオ
ンなり、各セッションのモニターが全てオフになった時点で該当のモニターもオフになります。
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・コマンドの影響範囲
バッファープール関連項目はバッファープール・スイッチをオンにしないと出力されない項目なので、スイッチと収集期間との関連を確認するた
めに着目しています。また、バッファー・
プール・データ論理読み取り(
前ページでは”
データ論理読取”と表す)とSelect SQL ステート
メント実行(前ページでは”select実行”と表す)は共にカウンター項目なので、数値リセットのタイミングを確認するために着目しています。
また、Select SQL ステートメント実行 は基本項目としてデフォルトでデータが収集されますが、バッファー・プール・データ論理読み取りは
バッファープール・スイッチをオンにしないと出力されない項目です。
T3 GET SNAPSHOT
セッション1,2ともにT2で実行されたselect文をカウントしているのでselect実行回数は1となっています。
セッション1はバッファープール・スイッチをオンにしているので(T1)、バッファー・プール関連情報が出力されますが、セッション2はT1のスイッチ変更の
影響を受けずにバッファープール・
スイッチがオフのため、情報が出力されません。
T6 GET SNAPSHOT
セッション1,2ともにT2とT5で実行されたselect文をカウントしているのでselect実行回数は2となっています。
この時点ではセッション2もバッファープール・スイッチをオンにしているので(T4)バッファー・プール関連情報が出力されています。
バッファー・プール・データ論理読み取り回数に注目すると、セッション2はT4でカウンターがゼロにリセットされているため、T5のselect文のみが カウントされて4となり、セッション1はT3時点の11にT5の4を加えて15となっています。
T9 GET SNAPSHOT セッション1はT7でリセット・コマンドを実行しているため、それ以降に実行されたT8のみをselect実行回数としてカウントしていますが、セッション2は リ
セット・コマンドの影響を受けずにT2,T5,T8のselect文をカウントしているので、select実行回数は3となっています。
バッファー・プール・データ論理読み取り回数についても、セッション2はT5にT8分を加えて8、セッション1はカウンターがリセットされているためT8 のみをカウントしていて4となっています。
セッション1ではリセット・コマンドを実行していますが、モニター・スイッチには影響を与えませんので、バッファープール関連情報は出力されています。
スナップショット・モニターは同一セッションの活動のみを提供するのではなく、データベース全体の活動状況を提供します。
Systems Solution & Web Server Competence Center No.1 DM Group
11-12
スナップショット・モニター・コマンド -GET MONITOR SWITCHESスナップショット・モニターのコマンドはデータベース・マネージャー構成パラメータに対して操作を行うものと各セッションのモニター・スイッ
チに対して行うものがあります。
以下、スナップショット・モニターの操作を行うコマンドを紹介します。(主なパラメータのみ)
スナップショット・モニター・スイッチのデータベース・マネージャー・レベルで現行設定を調べるとき
db2 => GET DBM MONITOR SWITCHES;
DBM システム・モニター情報集
ノード 0 のスイッチ・リスト
バッファー・プール活動情報
ロック情報
ソート情報
SQL ステートメント情報
表活動情報
作業単位情報
(BUFFERPOOL) = ON 03/07/2002 13:06:24.226568
(LOCK)
= ON 03/07/2002 13:06:24.186127
(SORT) = ON 03/07/2002 13:06:24.073545
(STATEMENT) = OFF
(TABLE) = OFF
(UOW) = ON 03/07/2002 13:06:24.316311
・省略時は全てオフ
・デフォルトで収集される基本情報は 表示されません
スナップショット・モニター・スイッチの現行セッションの設定を調べるとき
db2 => GET MONITOR SWITCHES
モニター記録スイッチ
ノード 0 のスイッチ・リスト
バッファー・プール活動情報
(BUFFERPOOL) = OFF
ロック情報
(LOCK) = OFF
ソート情報
(SORT) = OFF
SQL ステートメント情報
(STATEMENT) = OFF
表活動情報
(TABLE) = OFF
作業単位情報
(UOW) = OFF
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニター・コマンド -UPDATE MONITOR SWITCHESデータベース・モニター記録スイッチをオンまたはオフにします。
UPDATE MONITOR SWITCHES
.------------------------.
V
│
>>-UPDATE MONITOR SWITCHES USING-------switch-name--+-ON--+--+-->
'-OFF-'
例:
update monitor switches using bufferpool on
コマンド・パラメーター
USING switch-name 以下のスイッチ名が使用できます。
BUFFERPOOL バッファー・プール活動情報
LOCK
ロック情報
SORT
ソート情報
STATEMENT SQL ステートメント情報
TABLE
表活動情報
データベース・マネージャー構成パラメータの変更には以下のコマンドを使用します。
UPDATE DBM CFG USING DFT_MON_xxxx ON/OFF
xxxxには以下の値が入ります
BUFPOOL
LOCK
STMT
TABLE
UOW
Systems Solution & Web Server Competence Center No.1 DM Group
13-14
スナップショット・モニター・コマンド -RESET MONITORモニターのカウンターをゼロにリセットします。
RESET MONITOR
>>-RESET MONITOR---+-ALL----------------------------------+----->
'-FOR---+-DATABASE-+---database-alias--'
'-DB-------'
例
reset monitor all
コマンド・パラメーター
ALL
このオプションは、すべてのデータベースについて内部カウンターをリセットするよう指示します。
FOR DATABASE database-alias
このオプションは、別名 database-alias をもつデータベースの内部カウンターだけをリセットするよう指示します。
※各セッションはモニター・データの個別のコピーを持っているので、コマンドを発行したセッションのカウンターのみリセットされま
す
Systems Solution & Web Server Competence Center No.1 DM Group
ブランク・ページ
Systems Solution & Web Server Competence Center No.1 DM Group
15-16
スナップショット・モニター・コマンド -GET SNAPSHOT FOR指定したレベルにおけるデータベースの活動状態を取得します。
GET SNAPSHOT FOR
>>-GET SNAPSHOT FOR--------------------------------------------->
>-----+-+-DATABASE MANAGER-+---------------------------------------+>
│ +-DB MANAGER-------+
│
│ '-DBM--------------'
│
+-ALL---DATABASES--------------------------------------------+
+-ALL---APPLICATIONS-----------------------------------------+
+-ALL BUFFERPOOLS--------------------------------------------+
+-+-----+--APPLICATION----+-APPLID--appl-id-------+----------+
│ '-DCS-'
'-AGENTID--appl-handle--'
│
'--+-ALL-----------------------------+---ON--database-alias--'
+----------+-DATABASE-+-----------+
│
'-DB-------'
│
+----------APPLICATIONS-----------+
+-TABLES--------------------------+
+-TABLESPACES---------------------+
+-LOCKS---------------------------+
'-BUFFERPOOLS---------------------'
特定の活動中のアプリケーションを
表示したいときに使用できます。
applid、appl handleはlist applications
コマンドにて確認できます。
例
get snapshot for database on sample
get snapshot for tables on sample
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニター・コマンド -GET SNAPSHOT FORコマンド・パラメーター
DATABASE MANAGER
活動状態のデータベース・マネージャー・インスタンスの統計を提供します。
ALL DATABASES
現行のノード上にあるすべての活動状態のデータベースに関する、一般的な統計を提供します。
ALL APPLICATIONS
現行のノード上にあるデータベースに接続された、活動状態のすべてのアプリケーションに関する情報を提供します。
ALL BUFFERPOOLS
活動状態のすべてのデータベースのバッファープール活動に関する情報を提供します。
ALL ON database-alias
指定したデータベースのすべてのアプリケーション、表、表スペース、バッファー・プール、およびロックに関する一般的な統計およ
び情報を提供します。
DATABASE ON database-alias
指定したデータベースの一般的な統計を提供します。
APPLICATIONS ON database-alias
指定したデータベースに接続されているすべてのアプリケーションに関する情報を提供します。
TABLES ON database-alias
指定したデータベース内の表に関する情報を提供します。 これは、TABLE 記録スイッチがオンになった以降にアクセスされた表
のみを含みます。
TABLESPACES ON database-alias
指定したデータベースの表スペースに関する情報を提供します。
LOCKS ON database-alias
指定したデータベースに接続されている各アプリケーションが保持している、すべてのロックに関する情報を提供します。
BUFFERPOOLS ON database-alias
指定したデータベースのバッファープール活動に関する情報を提供します。
Systems Solution & Web Server Competence Center No.1 DM Group
17-18
スナップショット・モニター取得手順 -コマンド-
アプリケーション
DB2 CLP
c:¥sqllib > db2 get monitor switches
・・・・・
c:¥sqllib > db2 update monitor switches using table on
c:¥sqllib > db2 update monitor switches using bufferpool on
c:¥sqllib > db2 reset monitor all ③モニターをリセットする
①モニターの活動状況を確認する
②モニタースイッチをオンにする
④アプリケーションを実行する
注:このとき、コマンドウィンドウを閉じない。
c:¥sqllib > db2 get snapshot for database on sample >sample_snap.txt ⑤スナップショットを取得する
c:¥sqllib > db2 get snapshot for application on sample >>sample_snap.txt
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニターの取得手順 -コマンド手順
1. モニター・
スイッチの活動状況を確認する
2. 取得する情報のモニター・スイッチをオンにする
必要とする情報に対応するモニター・
スイッチをONにします。
モニターがONの状態ではシステムに多少負荷がかかります。
注)
ウィンドウを閉じると、モニタースイッチはOFFになります。
3. モニター情報をリセットする
スナップショットを取得する直前で、モニター情報をリセットします。
注)スナップショットの保持している数値が0にリセットされますが、モニタースイッチはリセットされません。
4. アプリケーションを実行する
データベースへのアクセスを実行します。
アプリケーション中の特定の作業を見る場合には、その作業を行う直前で、モニター情報をリセットします。
5. スナップショットを取得する
スナップショットを取得します。
スナップショット情報は取得してもリセットされません。必要に応じてモニター情報をリセットします。
Systems Solution & Web Server Competence Center No.1 DM Group
19-20
スナップショット・モニターの取得手順 -コントロール・センター”モニター活動の表示”
モニター・ウィンドウが表示され、
以下のモニターが開始される
・バッファー・プール
・ロック
・ソート
ユーザー定義モニターの作成
オブジェクトのシステムを
右クリックし
”モニターのリスト”を選択する
”デフォルト・モニターの開始”
以下のモニターが開始される
・バッファー・プール
・ロック
・ソート
”モニターの開始”
定義済のモニター一覧が表示され
るので開始したいモニターを選択
する
・
IBM提供のモニターとユーザー定
義モニターが表示される
”モニターの停止”
コントロール・センターから 開始したモニターが停止
する
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニターの取得手順 -コントロール・センターコントロール・センターからスナップショットを開
始した場合は、左記のようなウィンドウで結果
を確認することができるので、システムの稼働
状況の監視画面として利用できます。
・出力項目を選択することができるので、
ユーザーのニーズにあった監視ウィンド
ウを用意することができます。
・閾値を設定し、その値を越えた場合の アクションを指定できます。
−アラート・センターへの追加
−ビープ音
−コマンドの実行
−ユーザー・メッセージの出力
・自動更新ができます。
(
10秒毎から4時間毎)
・グラフ表示も可能です。
・コマンド出力にはないバッファーヒット率
も項目として提供しています。
・出力結果をファイルに保存することは
できません。
Systems Solution & Web Server Competence Center No.1 DM Group
21-22
スナップショット・モニター情報の見方 1
スナップショット情報は、取得したスナップショットによって内容や詳細レベルが異なります。
パフォーマンスなどのトラブル時に、問題点がどこにあるかを分析するためにスナップショット・
モニターを利用します。
このような場合には、まずDATABASE スナップショットを取得し、次の4つの点に注目し大まかな切り分けを行います。
ロック情報
バッファープール情報
アプリケーション稼動状況
キャッシュ情報
です。
それぞれ、次のようなことが確認できます。
1. ロック情報
データベースに発生しているロックの状況を見ることができます。
想定していたよりもロックが多く発生している場合は、アプリケーションのロジックに問題があることが想像されます。
アプリケーションごとにスナップショット取得すれば、どのアプリケーションがロックを起こしているかがわかります。
2. バッファープール情報
バッファープールのサイズが適正かどうか、索引が正しく使用されているかどうかを確認することができます。
場合によって、バッファープールの大きさを大きくしたり、索引を考慮したりします。
3. アプリケーション稼動状況
アプリケーションから発行されるSQLやシステムが発行するSQLをまとめて確認することができます。
アプリケーションが想定したようにデータベースをアクセスしているかがわかります。想定したよりも、データにアクセスする回数
が少ない場合や、Rollbackが大量に発生している場合には、アプリケーションに問題があることが想像されます。
4. キャッシュ情報
パッケージキャッシュやカタログキャッシュのサイズが適正かどうか確認できます。
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニター情報の見方 2
ここでは、スナップショット情報の基本的な見方を解説します。
次ページ以降にあるのは、
>
>
>
>
db2
db2
db2
db2
update monitor swtiches using sort on
update monitor switches using lock on
update monitor switches using bufferpool on
reset monitor all
reset monitor と、get snapshot の間に、稼動状況を確
認したいアプリケーションを実行する。
> db2 get snapshot for database on sample
と実行したときの一例です。
モニタースイッチは全てを on にする必要はありませんが、on にしなかった情報はスナップショット情報で[取得されませんでした]もしく
は[not collected]となります。
特に注目すべき項目が強調してあります。
※ それぞれのモニタースイッチをONにすると、モニター・ヒープサイズ(mon_heap_sz)を使用します。従ってモニター・ヒープサイズ が小さいとエラー(
SQLCODE -973)
になる場合があります。その場合には、モニター・ヒープサイズを大きくするか、
不要なモニタースイッチをOFFにしてください。
モニター・ヒープに必要なページの概数を求める式
(モニター・アプリケーション数 + 1) *
(データベースの数 *
(800 + (アクセスされた表の数 * 20) +
((接続されたアプリケーションの数 + 1) *
(600 + (表スペースの数 * 100)))))
+ (((イベント・モニター・バッファー・サイズの合計) * 4096) * 2)
Systems Solution & Web Server Competence Center No.1 DM Group
23-24
スナップショット・モニター情報の例
データベース・スナップショット
データベース名
データベース・パス
入力データベース別名
データベース状況
・・・・・
スナップショット・タイム・スタンプ
・・・・・
ロック保留
ロック待機
ロック上で待機される時間データベース (ms)
使用中のロック・リスト・メモリー (バイト)
デッドロック検出
ロック・エスカレーション
排他ロック・エスカレーション
ロック上で待機中のエージェント
ロック・タイムアウト
・・・・・
バッファー・プール・データ論理読み取り
バッファー・プール・データ物理読み取り
非同期プール・データ・ページ読み取り
バッファー・プール・データ書き込み
非同期プール・データ・ページ書き込み
バッファー・プール索引論理読み取り
バッファー・プール索引物理読み取り
非同期プール索引ページ読み取り
バッファー・プール索引書き込み
非同期プール索引ページ書き込み
バッファー・プール読み取り時間の合計 (ms)
バッファー・プール書き込み時間の合計 (ms)
非同期読み取り合計経過時間
非同期書き込み合計経過時間
=
=
=
=
SAMPLE
C:¥DB2¥NODE0000¥SQL00003¥
SAMPLE
Active
= 03/14/2002 15:56:49.785786
}
}
=
=
=
=
0
0 *
0 * 2196
= 0
= 0
= 0
= 0
= 0
= 0
= 0
= 0
=
=
=
=
=
=
=
0
0
0
0
0
0
0
①ロック情報
= 4
= 0
**
**
**
= 0
= 0
**
**
**
**
**
**
**
**
**
**
**
②バッファープール情報
*:ロック・モニターをオンにしないと
収集されない項目
**:バッファープール・モニターをオンに
しないと収集されない項目
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニター情報の例
・・・・・
コミット・ステートメント試行
ロールバック・ステートメント試行
動的ステートメント試行
静的ステートメント試行
失敗したステートメント操作
Select SQL ステートメント実行
Update/Insert/Delete ステートメント実行
DDL ステートメント実行
内部自動再バインド
内部行削除
内部挿入行
内部行更新
内部コミット
内部ロールバック
デッドロックによる内部ロールバック
削除行数
挿入行数
更新行数
選択行数
読み取り行数
バインド/事前コンパイル試行
・・・・・
パッケージ・キャッシュ検索
パッケージ・キャッシュ挿入
パッケージ・キャッシュ・オーバーフロー
パッケージ・キャッシュ最高水準点 (バイト)
アプリケーション・セクション検索
アプリケーション・セクション挿入
カタログ・キャッシュ検索
カタログ・キャッシュ挿入
カタログ・キャッシュ・オーバーフロー
カタログ・キャッシュ・ヒープ・フル
= 14
= 1
= 38
= 15
=
=
=
=
1
7
0
0
=
=
=
=
=
0
0
0
0
7
}
}
}
③アプリケーション稼動状況
= 4
= 0
= 0
= 0
= 0
= 134
= 169
= 0
= 8
= 7
=
=
=
=
0
190787
38
7
= 8
= 3
= 0
= 0
Systems Solution & Web Server Competence Center No.1 DM Group
25-26
④キャッシュ情報
スナップショット・モニター情報の例 - 解説1
①ロック情報
モニター期間中のデータベースのロックに関する情報の概略です。
get snapshot for locks on xxx コマンドでスナップショット情報を取得する方法もあります。
不用意なロックや、ロックエスカーレーション、デッドロックが頻繁に起こっているようだと、ロジックを見直す必要があります。
commit コマンドの発行し忘れがないかなどを確認してください。
デッドロックの検出(Deadlocks detected)
デッドロックが発生した回数です。
この数値が大きい場合にはアプリケーションのロジック変更によるデッドロック回避が必要です。
ロック・エスカレーション(Lock escalations)
排他ロック・
エスカレーション(Exclusive lock escalations)
ロックエスカレーションが発生した回数です。
ロックエスカレーションは、多くの行ロックが発生した場合に、DB2 UDB が行ロックから排他ロックや表ロックへ、ロックレベルが変更
することを言います。これは、行ロックが大量に発生したときにデータベース構成パラメータに応じて発生しますので、ロックリストを大
きくするか、deadlock と同じく、アプリケーションのロジック変更が必要です。なおロックリストを大きくしても、根本的な解決ではありま
せん。
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット・モニター情報の例 - 解説2
②バッファープール情報
バッファープールの状況に関する情報の概略です。
(get snapshot for locks on bufferpools コマンドでスナップショット情報を取得する方法もあります。)
データベースはバッファープール(メモリ)経由でしかデータをアクセスできません。。
従って、バッファープールにキャッシュされていない場合は、一度ディスクから読み込み、バッファープールに読み込む時間が余分
に発生することになります。
また、バッファープールに空きスペースがない場合には、使用度の低いデータの物理ディスクへの書き込みが発生するなど、パ
フォーマンスに多くの影響を及ぼす場合があります。
バッファープールヒット率が悪い場合にはバッファープールを大きくするなどの設定値を変更してみてください。
ただし、通常はデータの追加や更新が行われるためバッファーヒット率は 100% にはなりません。
一般的には90%以上を目標とします。
バッファー・プール・データ論理読み取り、バッファー・プール索引論理読み取り
(Buffer pool data logical reads、Buffer pool index logical reads)
バッファープールから、データや索引を読み込んだ回数です
バッファー・プール・データ物理読み取り、バッファー・プール索引物理読み取り
(Buffer pool data physical reads、Buffer pool index physical reads)
ディスクI/Oを伴う、バッファープールの読み込み回数です。
データのバッファーヒット率
(1-(バッファー・
プール・
データ物理読み取り/バッファー・プール・データ論理読み取り)) * 100 (%)
索引のバッファーヒット率
(1-(バッファー・
プール索引物理読み取り/バッファー・プール索引論理読み取り)) * 100 (%)
バッファープール全体のバッファーヒット率
(1-(バッファー・
プール・
データ物理読み取り+バッファー・プール索引物理読み取り
/(バッファー・プール・データ論理読み取り+バッファー・プール索引論理読み取り)) * 100 (%)
Systems Solution & Web Server Competence Center No.1 DM Group
27-28
スナップショット情報の例 - 解説3
③アプリケーション稼動状況
アプリケーションのデータベースに関するアクセス状況を見ることができます。
この項目を確認すれば、スナップショット取得期間中のSQLの大体の処理数を把握することができます。
コミット・ステートメント試行
コミット文の発行回数
ロールバック・ステートメント試行
ロールバック文の発行回数
動的ステートメント試行、静的ステートメント試行
動的/静的SQL文の発行回数
Select SQL ステートメント実行、Update/Insert/Delete ステートメント実行
select/update/insert/delete SQL文の発行回数です。
これらの項目で、アプリケーションが発行したSQL文の数が把握できますので、アプリケーションが
無限ループなどがなく、正しく構築されているかどうかが確認できます。
内部ロールバック/デッドロックによる内部ロールバック
システムが自動的に行ったロールバックやデッドロックによってロールバックされた数
これらの項目が多い場合には、アプリケーションに問題がありロールバックが発行されている可能性があります。
削除行数、挿入行数、更新行数、読み取り行数
select/update/insert/delete された回数です。
これらの項目で、SQLで処理された行数を把握することができるため、想定していた処理量が実行されているかを確認できます。処理
量が大幅に想定していた数字と異なる場合には、SQLの間違いや、データに問題があることが想像されます。
注)アプリケーション稼動状況で取得される情報には、インデックスなどを読み込んだ情報を含んでいますので、純粋にユーザーアプリ
ケーションで処理した行数よりは多くカウントされます。
Systems Solution & Web Server Competence Center No.1 DM Group
スナップショット情報の例 - 解説4
④キャッシュ情報
カタログキャッシュや、パッケージキャッシュは静的SQLのコンパイル時や、動的SQLのSQL処理時に参照されます。
特に動的SQLの場合は、SQLのコンパイルがSQL処理時に行われるので、カタログキャッシュやパッケージキャッシュが小さいと、SQL
を処理するごとにコンパイル時間が必要となり、パフォーマンスに悪影響を及ぼします。
カタログ、パッケージどちらのヒット率も80%を一つの目安として、SQLを見直しなるべく同じようなステートメントになるように変更する
か、カタログ、パッケージのキャッシュサイズを大きくとることを検討してください。
カタログ・キャッシュ検索、パッケージ・キャッシュ検索
カタログ、パッケージキャッシュが参照された回数です。
カタログ・キャッシュ挿入、パッケージ・キャッシュ挿入
カタログ、パッケージキャッシュへ追加しようとした回数です。
カタログキャッシュ ヒット率
(1-(カタログ・
キャッシュ挿入/カタログ・キャッシュ検索)) * 100 (%)
パッケージキャッシュ ヒット率
(1-(パッケージ・
キャッシュ挿入/パッケージ・
キャッシュ検索)) * 100 (%)
Systems Solution & Web Server Competence Center No.1 DM Group
29-30
参考:アプリケーション・スナップショット出力例
アプリケーション・スナップショットのサンプルです。
(
掲載済でない主な項目のみを掲載しています。)
(
全てのモニター・スイッチをオンにしています。)
DB2 for OS/390 V7がクライアントとなっている活動中のアプリケーション です。(①)
SELECT * FROM DSNX.EMPPROJACTを実行しようとしていますが、 EMPPROJACTテーブルのロック待ちとなっていることがわかります。(②)
インバウンド通信アドレス
データベース名
= SAMPLE
データベース・パス
= C:¥DB2¥NODE0000¥SQL00003¥
クライアント・データベース別名
= SAMPLE
入力データベース別名
= SAMPLE
最後のリセット・タイム・スタンプ
=
スナップショット・タイム・スタンプ
= 03/26/2002 10:19:53.104460
認可された最高権限レベル
=
直接 DBADM 権限
直接 BINDADD 権限
・
・
・
アプリケーション・スナップショット
アプリケーション・ハンドル
アプリケーション状況
状況変更時刻
アプリケーション・コード・ページ
アプリケーション国別コード
DUOW 相関トークン
アプリケーション名
アプリケーション ID
TP モニター・クライアント・ユーザー ID
・・・
= 24
= ロック待機
= 03/26/2002 10:19:26.715210
=0
=0
= 09746114.0B04.020326011927
= HORIBE
.BATCH
= 09746114.0B04.020326011927
=
②
シーケンス番号
= 0001
接続要求開始タイム・スタンプ
= 03/26/2002 10:19:26.689144
接続要求完了タイム・スタンプ
= 03/26/2002 10:19:26.692060
アプリケーション・アイドル時間
=
許可 ID
= DB2ADMIN
クライアント・ログイン ID
= DB2ADMIN
クライアント構成名
= MP3K2DBX
クライアント・データベース・マネージャー製品 ID
= DSN07010
クライアント・アプリケーションの処理 ID
=0
クライアント・アプリケーションのプラットフォーム
= DRDA 経由 MVS
クライアントの通信プロトコル
= APPC
= 9.116.21.97 2820
アプリケーションで保留されたロック
=3
接続からのロック待機
=2
ロック上で待機している時間アプリケーション (ms)
デッドロック検出
=0
ロック・エスカレーション
=0
排他ロック・エスカレーション
=0
接続後のロック・タイムアウト数
=0
ロック上で待機している合計時間 UOW (ms)
ソートの合計
ソート時間の合計 (ms)
合計ソート・オーバーフロー
= 26389
= 26389
=0
=0
=0
バッファープール関連情報
・・・
DML操作関連情報
・・・
キャッシュ関連情報
・・・
①
Systems Solution & Web Server Competence Center No.1 DM Group
参考:アプリケーション・スナップショット出力例
最新の操作
= Fetch
カーソル名
= C1
最新の操作開始タイム・スタンプ
= 03/26/2002 10:19:26.707265
最新の操作停止タイム・スタンプ
=
アプリケーションに関連したエージェント
=1
・・・
ステートメント・タイプ
= Dynamic SQL Statement
ステートメント
= Fetch
セクション数
=1
アプリケーション作成者
= DB2ADMIN
パッケージ名
= DSNESM68
カーソル名
= C1
ステートメント・ノード番号
=0
ステートメント開始タイム・スタンプ
= 03/26/2002 10:19:26.707265
ステートメント停止タイム・スタンプ =
最後に完了した stmt の経過時間 (sec.ms)
= 0.000087
合計ユーザー CPU 時間
= 0.000000
合計システム CPU 時間
= 0.000000
タイマーオン時の SQL コンパイラー・コスト見積もり
= 15
SQL コンパイラー・カーディナリティー見積もり
= 94
要求された並行処理の度合い
= 1
ステートメント上で作動しているエージェント数
=1
ステートメント用に作成されたサブエージェントの数
=1
ステートメント・ソート
=0
合計ソート時間
=0
ソート・オーバーフロー
=0
読み取り行数
=0
書き込み行数
=0
削除行数
=0
更新行数
=0
挿入行数
=0
フェッチ行数
=0
ブロック・カーソル
= NO
②
動的 SQL ステートメント・テキスト :
SELECT * FROM DSNX.EMPPROJACT
エージェント処理/スレッド ID
= 2080
ロック待ちのサブセクション
=0
ロック保留中エージェント ID
= 23
ロック保留中のアプリケーション ID
= 09746114.0A04.020326011911
ロック待機が行われたノード
=0
ロック・オブジェクト・タイプ
=表
ロック・モード
= Share with Intention Exclusive Lock (SIX)
要求ロック・モード
= Share Lock (S)
ロック保留中の表スペース名 = TSTBTEST1
ロック保留中の表スキーマ
= DSNX
ロック保留中の表名
= EMPPROJACT
ロック待機開始タイム・スタンプ
= 03/26/2002 10:19:26.715212
エスカレーション結果のロック
= NO
アプリケーション・ハンドル:23
アプリケーション・ハンドル:24
UPDATE DSNX.EMPPROJACT
SET PROJNO = 'AD3112'
WHERE PROJNO = 'AD2113' ;
SELECT * FROM
DSNX.EMPPROJACT
ロック待ち
COMMIT待ち
DSNX.
EMPPROJACT
Systems Solution & Web Server Competence Center No.1 DM Group
31-32
参考:データベース・ロック・スナップショット出力例
データベース・ロック・スナップショットのサンプルです。
左がアプリケーション・スナップショット例のアプリケーションです。
(アプリケーション・ハンドル:24)
右が、ロックを保持している側のアプリケーションです(アプリケーション・ ハンドル:23)。コミットが出ていないので、ロックを保持している状態です。
データベース・ロック・スナップショット
アプリケーション・ハンドル
アプリケーション ID
シーケンス番号
アプリケーション名
許可 ID
アプリケーション状況
状況変更時刻
アプリケーション・コード・ページ
保留ロック
合計待ち時間 (ms)
= 24
= 09746114.0B04.020326011927
= 0001
= HORIBE
.BATCH
= DB2ADMIN
= ロック待機
= 03/26/2002 10:19:26.715210
=0
=2
= 38514
ロックのリスト
ロック・オブジェクト名
ノード番号ロックの保留場所
オブジェクト・タイプ
表スペース名
表スキーマ
表名
モード
状況
ロック・エスカレーション
ロック待ちのサブセクション
=0
ロック保留中エージェント ID
= 23
ロック保留中のアプリケーション ID = 09746114.0A04.020326011911
ロック待機が行われたノード
=0
ロック・オブジェクト・タイプ
=表
ロック・モード
= Share with Intention Exclusive Lock (SIX)
要求ロック・モード
= Share Lock (S)
ロック保留中の表スペース名
= TSTBTEST1
ロック保留中の表スキーマ
= DSNX
ロック保留中の表名
= EMPPROJACT
ロック待機開始タイム・スタンプ
= 03/26/2002 10:19:26.715212
エスカレーション結果のロック
= NO
ロックのリスト
ロック・オブジェクト名
ノード番号ロックの保留場所
・・・
アプリケーション・ハンドル
アプリケーション ID
シーケンス番号
アプリケーション名
許可 ID
アプリケーション状況
状況変更時刻
アプリケーション・コード・ページ
保留ロック
合計待ち時間 (ms)
ロック・オブジェクト名
・・・
ロック・オブジェクト名
ノード番号ロックの保留場所
オブジェクト・タイプ
表スペース名
表スキーマ
表名
モード
状況
ロック・エスカレーション
・・・
=0
=0
Systems Solution & Web Server Competence Center No.1 DM Group
33-34
= 23
= 09746114.0A04.02032601191
= 0001
= SYSADM
.BATCH
= DB2ADMIN
= UOW 待機中
= 03/26/2002 10:19:10.513966
=0
= 13
=0
= 32790
=0
=行
= TSTBTEST1
= DSNX
= EMPPROJACT
=X
= Granted
= NO
= 32789
=4
=0
=表
= TSTBTEST1
= DSNX
= EMPPROJACT
= SIX
= Granted
= NO
Fly UP