Oracleは、データブロックプロセスを読み取りまたは変更します。
1.(読み取り操作)非一意インデックスモード、非インデックスルートブロックおよびブランチブロック
- アクセスするブロックのアドレスをハッシュします
HASH(FILE#、BLOCK#)= hash_value(HV)
HVに従って対応するHASHバケットを見つけます
このバケットを管理するCBCラッチに排他的に適用します
バケット内のHASHチェーンリストを検索し、チェーン上のbuffer_header(BH)を比較して、ターゲットBHを見つけます
BHのバッファピンロックをS(共有)モードに変更します(以前は0、ロックなし)
CBCラッチを解放します。
BHのBAポインタに従ってバッファを見つけます
バッファ内のデータをPGAに読み取ります。
このバケットを管理するCBCラッチに排他的に適用します
10. BHのバッファピンロックを0(ロックなし)モードに変更します
。11。CBCラッチを解放します。
2.(読み取り操作)一意のインデックスモードのすべてのブロック、一意でないインデックスルートブロックおよびブランチブロック
- アクセスするブロックのアドレスをハッシュします
HASH(FILE#、BLOCK#)= hash_value(HV)
HVに従って対応するHASHバケットを見つけます
このバケットを共有する方法で管理するCBCラッチを申請します
バケット内のHASHチェーンリストを検索し、チェーン上のbuffer_header(BH)を比較して、ターゲットBHを見つけます
BHのBAポインタに従ってバッファを見つけます
バッファ内のデータをPGAに読み取ります
CBCラッチを解放します
3.(書き込み操作)
- アクセスするブロックのアドレスをハッシュします
HASH(FILE#、BLOCK#)= hash_value(HV)
HVに従って対応するHASHバケットを見つけます
このバケットを管理するCBCラッチに排他的に適用します
バケット内のHASHチェーンリストを検索し、チェーン上のbuffer_header(BH)を比較して、ターゲットBHを見つけます
。5。BHのバッファピンロックをX(排他的)モード(以前は0、ロックなし)に変更します。
CBCラッチを解放します
BHのBAポインタに従ってバッファを見つけます
REDOデータを生成する
バッファ内のデータを変更します。
このバケットを管理するCBCラッチに排他的に適用します。
10.BHのバッファピンロックを0モードに変更します
11.CBCラッチを解放します。