データベースのデータを参照するには、ディスク上にあるデータをメモリに読み込む必要があります。ディスクからデータを読み込むためには、それなりの時間がかかるため、その読込み処理が完了するまではデータの参照を行うことができません。他にも、参照しようとしているデータを他のトランザクションが更新している可能性があります。適切に整合性のとれたデータを参照するためには、他のトランザクションの更新処理が完了するのを待つ必要があります。このように、データベースのデータを参照したり、更新したりするためには、様々な状態に対応して、処理を一時的に中断して待ち状態になることがあります。サンプリングした実行状態の内訳を見ることで、発生した状況や、どのような理由で処理が待ち状態になっていたのかを推測することができます。
サンプリングした実行状態の内訳で、待ち状態(WAITING)となった回数と待ち状態となった原因を確認します。
待ち状態(WAITING)の場合の表示内容と発生した状況を以下に示します。
表示内容 | 待ち状態となった原因 | 状況 |
---|---|---|
LOCK | トランザクションの占有待ち | 検索対象となっているレコードへのアクセスが、他のトランザクションのアクセスと競合したため、待ち状態になったことを示します。rdbpmreportコマンドで、SQL文が実行されていたときの資源の占有待ちに関する情報を確認することができます。 |
LOCK_TEMPORARY | トランザクションの一時占有待ち | ページ長が大きくかつレコード長が短い、というような1つのページの中に存在するレコードの数が多い場合に発生しやすくなります。 |
DB_BUFFER | 共用バッファの空き待ち | 共用バッファプール、あるいはデフォルトバッファプールに未使用のページがなくなったときに発生します。 |
DB_READ | ページ読込み待ち | データベースからのページの読み込み待ちが発生しています。rdbpmreportコマンドで、データベースに関する入出力の動作状況を確認できます。 |
DB_WRITE | ページ書込み待ち | 共用バッファ上でページを変更しようとする際に、当該ページがデータベーススペースへ書き込み中であったため、書き込みが完了するまで待ちになったことを示します。 |
DB_WRITE_TRNEND | トランザクション終了時のページ書込み待ち | トランザクションのロールバック、またはリカバリなしの利用規定を設定しているDSIのデータ変更を行ったトランザクションのコミットで発生する場合があります。 |
LOG_BI_BUFFER | BIログバッファの空き待ち | テンポラリログファイルのBIログバッファの空き待ちが発生したことを示します。 |
LOG_AI_BUFFER | AIログバッファの空き待ち | テンポラリログファイルのAIログバッファの空き待ちが発生したことを示します。 |
LOG_RCP | リカバリログ量の減少待ち | テンポラリログファイルのAIログ量がリカバリログ量を超過したため、リカバリログ量が減少するまで待ちとなったことを示します。 |
LOG_BI_READ | BIログ読込み待ち | テンポラリログファイルのBIログ域への読込み待ちが発生したことを示します。 |
LOG_BI_WRITE | BIログ書込み待ち | テンポラリログファイルのBIログ域への書込み待ちが発生したことを示します。 |
LOG_AI_WRITE | AIログ書込み待ち | テンポラリログファイルのAIログ域への書込み待ちが発生したことを示します。 |
LOG_ARC_FULL | アーカイブログファイルの満杯状態の解消待ち | 動作環境ファイルにARC_FULL=WAITを指定している場合に、アーカイブログファイルが満杯になったため、アーカイブログファイルのバックアップまたは破棄が行われるまで待ち状態となったことを示します。 |
処理が待ち状態となっていた場合のチューニング方法については、“4.6 処理が待ち状態となっていた場合のチューニング”を参照してください。
参照
以下の項目についての詳細は、“クラスタ導入運用ガイド”を参照してください。
DB_SEND
COM_BUFFER
COM_SEND
COM_RECV