
gc cr/current block busy - 日本エクセム株式会社 Oracle待機イベント情報
目次[非表示]
- 1.基本情報
- 1.1.要求モードとbusyイベント
- 2.待機パラメータと待機時間
- 3.チェックポイントとソリューション
基本情報
gc cr/current block busyイベントは、gc cr/current requestイベントのFixed-upイベントで、ホルダーのノードからブロック画像を転送される過程で、競合が発生したことを意味します。gc cr/current requestイベントがgc cr/ current block busyイベントに変更された流れは、以下の通りです。
gc cr/current block busy待機イベントは、ブロックを送信される過程で、競合に起因する遅延(Delay)が発生したことを意味します。Oracleは、「競合(Contention)」と「混雑(Congestion)」という二つの理由により、グローバルキャッシュの同期過程で遅延が発生すると定義しています。競合(Contention)が遅延の発生事由である場合には、「Busy」という用語を使用し、混雑(Congestion)が発生事由である場合には、「Congested」という用語を使用していることを覚えておきましょう。
ホルダーノードのLMSプロセスがブロックを送信する過程で競合による遅延が発生する理由は、次のようなものがあります。
上記のような状況の競争が発生した場合、Oracleは、ブロック処理の過程で競合が発生したと見なされます。
要求モードとbusyイベント
gc cr/current block busyイベントが発生する正確なタイミングは、ブロックリクエストがCRモードであるか、Currentモードであるかに応じて若干異なります。
リクエストノードのCRモード要求に対してホルダーノードがまだCommitが行われていない現在のブロックを転送する場合は、必ずCRブロック、すなわち変更前のイメージを送信する必要があります。問題は、ホルダーノードのバッファ・キャッシュにCRイメージが存在しない場合です。この場合、現在のブロックのコピー版であるCRコピーブロックを生成し、アンドゥイメージをディスクから読み取られた後、CRコピーブロックにロールバックを実行する一連の過程を経なければなりません。また、現在のブロックの、REDOフラッシュを実行します。このような一連の過程がホルダーノードのLMSプロセスに過度の負荷を与えるので、Oracleは不完全なイメージのCRブロックを要求ノードに送信します。不完全なCRブロックを送信されたリクエストノードが自らの完全なイメージのCRブロックを生成することになります。これをLight Weight Rule(軽量化の法則)と呼びます。 V$CR_BLOCK_SERVERビューを照会すると、完全一貫性のある読み取り操作中にLight Weight Ruleが何度も適用され確認することができます。
Commitが行われていないダーティブロックのCRモード要求には、主にgc cr block2/3-way類のイベントをFixed-upイベントとして使用します。この過程で、REDOフラッシュ過程で遅延が発生した場合gc cr block busyイベントをFixed-upイベントとして使用します。
一方、Commitが行われたダーティブロックのCurrentモードの要求が発生した場合、すぐにロックダウングレードが発生します。この場合、要請ノードは、一般的にgc current block2/3-way類のイベントをFixed-upイベントとして使用し、万一ホルダーノードの、REDOフラッシュ過程で遅延が発生した場合gc current block busyイベントをFixed-upイベントに使用します。
待機パラメータと待機時間
待機パラメータ
gc cr/ current block busyイベントなどFixed-upイベントは、P1、P2、P3の値が別途付与されず、Placeholderイベント(ここではgc cr requestイベント)と同じ値を持つものと解釈すればよいのです。
待機時間
-
チェックポイントとソリューション
gc cr block busy解消案
gc cr block busyイベントの待機を解消するための方法は次のとおりです。
gc cr block busyイベント待機は、ブロックの競合によって発生するため、インターコネクトの性能とは無関係に発生することがあることに注意しなければなりません。つまり、ブロックを送信する過程で遅延が発生するのではなく、ホルダーノードがブロック転送を準備する過程で遅延が発生するのです。したがって、ブロックの競合を減らすか、または、ブロックの競合過程で発生する、REDOフラッシュを最適化することがチューニング方法になります。もちろん、インターコネクトの性能が低い場合は待機回収に比べて待機時間は増えることができます。
簡単なテストでは、gc cr block busyイベント待ちとブロック変更との関係を確認することができます。