主な待機イベント一覧
Category | Wait Class | Event |
---|---|---|
RAC | Cluster | gc cr/current (multi block) request |
Cluster | gc cr/current grant 2-way | |
Cluster | gc cr/current block 2-way/3-way | |
Cluster | gc buffer busy acquire/release |
インターコネクト
RACにはインターコネクトを通したデータのやり取りに関する待機イベントがある。
これらの待機イベントは大きく2種類に分けられる。
- GES(Global Enqueue Service)の待機イベント:インスタンス間の排他制御に関連
- GCS(Global Cache Service)の待機イベント:インスタンス間のバッファキャッシュ一貫性に関連
本記事ではGCSの説明を行う
ブロックを取得する際、ディスクと自ノードのバッファキャッシュ以外に他インスタンスのバッファキャッシュも取得先の選択肢となるため、ブロック取得の手続きがシングルインスタンスより複雑になる
GCS
- バッファには以下の2種類がある
- CURRENT:ブロックの最新バージョン(DML文で要求される)
- CR(consistent read):特定時点のコミット済み変更が反映されたブロック(SELECTで要求される)
GCS待機イベントは下記のように表示される
CURRENTとCRの違い
gc cr/current (multi block) request
- 意味
CRブロックあるいはCURRENTブロックの要求中のためにサーバープロセスが待機していることを示す - 状況
リクエストが完了し、正確な待機イベントが現れるまでの一時的な待機イベント(プレースホルダ)と位置付けられる
gc cr/current grant 2-way
- 意味
CRブロックあるいはCURRENTブロックの要求に対して、ディスクからの読込みが許可されたことを示す ※何らかの要因でこの許可に時間を要した場合は、gc cr/current grant busy待機イベントが発生する - 状況
リソースマスターへの要求とサーバープロセスへの許可で2方向のやり取りを行う
gc cr/current block 2-way
- 意味
CRブロックあるいはCURRENTブロックの要求に対してキャッシュしているインスタンスからブロック転送が行われたことを示す - 状況
リソースマスターへの要求とサーバープロセスへの転送で2方向のやり取りを行う
gc cr/current block 3-way
- 意味
CRブロックあるいはCURRENTブロックの要求に対してキャッシュしているインスタンスからブロック転送が行われたことを示す - 状況
リソースマスターへの要求/ブロック保持ノードへの転送指示/サーバープロセスへの転送、の3方向のやり取りを行う
gc buffer busy acquire
- 意味
同一インスタンスの別セッションがキャッシュフュージョンによって他のキャッシュからバッファを読み取り終わるのをサーバープロセスが待機していることを示す - 状況
同一ブロックの取得要求による競合によって発生する
gc buffer busy release
- 意味
別インスタンスの別セッションがキャッシュフュージョンによってローカルキャッシュからバッファを読み取り終わるのを待機していることを示す - 状況
同一ブロックの取得要求による競合によって発生する