忍者ブログ

OracleDBAの技術メモ

最近物覚えが悪くなったので 仕事中に調べた後々役立つ情報をメモしております。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

待機イベント-gc cr block busy

待機イベント:gc cr block busy とは

CRブロックが転送されるのを待機している状態。
以下のような仕組みで発生する。



更新中ブロック等にSELECT要求等を行うと「CRブロック」が生成され、
「CRブロック」が転送されてSELECT要求が完了する(要求したブロックが参照できる)が、
このとき必ずログフラッシュが発生し、これが完了しないと「CRブロック」は転送されない。
その際の待ちが「gc cr block busy」イベントとなる。

ただし、必ずしも「gc cr block busy」の原因がログフラッシュとなるとは限らない。
(大半はログフラッシュが原因らしいと記述があるが…)


参考:
  ・Oracle Real Application Clusters(Oracle RAC)のキモ~Cache Fusionに注目する~
    http://www.oracle.com/technetwork/jp/articles/yagi-cache-fusion-098964-ja.html

  ・(書籍)ORACLE MASTER Export[RAC]編 株式会社翔泳社刊(通称黒本)

オラクルマスター教科書 ORACLE MASTER Expert 【RAC】編(試験番号:1Z0-048)

新品価格
¥6,510から
(2012/7/17 21:50時点)

PR

CacheFusionに関するアーキテクチャ(リンク)

RACのCacheFusionに関するアーキテクチャの説明は以下が参考になる。
http://www.oracle.com/technetwork/jp/articles/yagi-cache-fusion-098964-ja.html

CatcheFusionに関してもシンプルにまとめられているのでこの本もおすすめ。
↓↓↓

オラクルマスター教科書 ORACLE MASTER Expert 【RAC】編(試験番号:1Z0-048)

新品価格
¥6,510から
(2012/7/17 21:50時点)

USE_NLヒントを有効にするために

USE_NLヒントを使用する場合は、
ORDEREDヒントも使用することを検討する。

ORDRERDヒントを使用したSQLのFROM句に

FROM 外部表にしたいテーブル名, 内部表にしたいテーブル名

とすれば、結合順序が

外部表にしたいテーブル名 → 内部表にしたいテーブル名

となり、内部表にしたいテーブル名に指定したテーブルは必ず内部表となる。



参考:KROWN#70315 結合操作のヒント句を使用しているにも関わらず意図した結合にならない。

内部表の決定(USE_NLヒントが有効にならない原因)

USE_NLヒントは、
指定された表が内部表として使用されるような結合時に
ネステッド・ループ結合するように指示するヒント句である。

したがって、指定されたテーブルが内部表として使用されない場合には、
USE_NLヒントは無効となる。

通常、オプティマイザは複数の結合順序パターンのコストを評価し、
よりコストの低い実行計画となる結合順序パターンを選択する。

そのため、USE_NLで指定したテーブルが
内部表とならない結合順序のコストより低く評価された結合順序があった場合、
その結合順序が選択されてしまい
結果的にUSE_NLヒントは無効となってしまう。

  例:以下の4つのパターンが評価されたとする
      ※)(外部表)→(内部表)と表現する

      プラン1 表A→表B ネステッド・ループ結合 コスト:400
      プラン2 表A→表B ハッシュ・ジョイン結合 コスト:300
      プラン3 表B→表A ネステッド・ループ結合 コスト:200
      プラン4 表B→表A ハッシュ・ジョインン結合 コスト:100

    上記の場合、通常もっともコストの低いプラン4が選択される。
    プラン4で実行計画が構成された状態から、
    USE_NL(表B)を指定して結合方法を強制しようとしても、
    表Bは内部表ではないのでUSE_NLヒントは働かない。

    しかし、USE_NL(表A)を指定した場合、
    表Aは内部表なので、ネステッド・ループ結合が使用される。

外部表と内部表について

ネステッド・ループ結合は以下のようなルーチンによって処理される。



内部表検索時(内部ループ)に全表スキャンが繰り返されるとパフォーマンスが低下しやすいので、
内部表の結合列にインデックスがあるとよい。

ブログ内検索

プロフィール

HN:
宇佐 義男
性別:
男性
自己紹介:
都内で活動中のフリーエンジニア
最近はOracle DBに関する作業が主です。

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

最新CM

[08/06 Apagajid]
[06/23 Ajimehof]
[05/28 ovkftcz]
[05/20 Adeepen]
[05/13 Ajirubuy]

バーコード

P R

忍者アナライズ

免責事項

当ブログは日本オラクル株式会社 及びその子会社、関連会社とは一切関係ありません。 当ブログに記述の内容については、実際とは異なる場合があります。 記載しているコマンド、スクリプトを利用したことによって発生した問題、障害等については一切責任を負いません。 利用は自己責任にてお願い致します。