表書き込みイベント・モニターおよびファイル・イベント・モニターのバッファー方式

一部の表書き込みイベント・モニターおよびファイル・イベント・モニターは、 出力をファイルまたは表に書き出す前にバッファーに格納します。

表 1 に、 どのイベント・モニターがこのような出力バッファーを使用するかを示します。
表 1. イベント・モニターおよび出力バッファー
イベント・モニター・タイプ 出力をディスクへ書き込む前にバッファーに書き込むか?
アクティビティー いいえ
バッファー・プール はい
変更履歴 いいえ
接続 はい
データベース はい
デッドロック (すべてのバージョン) はい
ロッキング いいえ
パッケージ・キャッシュ いいえ
ステートメント はい
統計 はい
表スペース はい
はい
トランザクション はい
作業単位 いいえ
バッファーを使用しないイベント・モニターは、 ディスクへの出力の書き込みに、より新しくより高速なメカニズムを使用しているため、バッファーを使用する必要がありません。

バッファーを使用するこれらのイベント・モニターの場合、 バッファーが満杯になったときに自動的にレコードはディスクに書き込まれます。そのため、より大きなバッファーを指定してディスク・アクセスの回数を減らせば、 大量のスループットのあるイベント・モニターのモニター・パフォーマンスを改善することができます。 イベント・モニターにそのバッファーをフラッシュさせるには、 それを非アクティブ化するか、または FLUSH EVENT MONITOR ステートメントを使用してバッファーを空にする必要があります。

バッファーを使用するイベント・モニターの場合は、 イベント・モニターの出力をブロック化 するかまたは 非ブロック化 するかを指定できます。 ブロック化されたイベント・モニターは、両方のバッファーがいっぱいのときに、モニター・データを送信しているデータベース処理を一時停止します。 これは、ブロック化されたイベント・モニターがアクティブのときに、 イベント・レコードが廃棄されないようにするためです。 一時停止されたデータベース処理とその結果として付随するデータベース処理は、 バッファーが書き込まれるまでは実行できません。 これは、ワークロードの種類や入出力装置の速度によっては、 パフォーマンスを大きく消費することがあります。 イベント・モニターはデフォルトではブロック化されます。

ブロック化されていないイベント・モニターは、 イベント・モニターがデータを書き込むことのできる速度よりも速くデータが到着するとき、 エージェントから来るモニター・データを廃棄します。 これにより、イベント・モニターが、他のデータベース・アクティビティーのパフォーマンスに影響しないようにします。

イベント・レコードを廃棄したイベント・モニターは、 オーバーフロー・イベントを生成します。 これは、モニターがイベントを廃棄した開始時刻と停止時刻、 およびその期間に廃棄されたイベントの数を記述します。 イベント・モニターは、ペンディングのオーバーフローがあることを報告して、 終了または非アクティブ化することがあります。 その場合、次のメッセージが管理ログに書き込まれます。
DIA2503I Event Monitor monitor-name had a pending overflow record
when it was deactivated.

イベント・モニター・データの消失は、 個々のイベント・レコードについても生じる可能性があります。 イベント・レコードの長さがイベント・バッファリング・サイズを超えると、 バッファー内に収まらないデータは切り捨てられます。 例えば、stmt_text モニター・エレメントをキャプチャーしている場合に、 モニター中のデータベースにアタッチしたアプリケーションが長い SQL ステートメントを発行すると、 この状態が生じる可能性があります。 イベント・レコード情報のすべてをキャプチャーする必要がある場合には、 より大きなバッファーを指定してください。 より大きなバッファーを指定すれば、 ファイルまたは表への書き込み頻度が減ることに留意してください。