Know more about Cache Buffer Handle


前の記事「latch free:cache buffer handlesによるSQLパフォーマンスの問題」でcache buffer handle latchの知識を紹介しました.ここで復習します.「セッションがbuffer headerをピン止めする必要がある場合は、まずbuffer handleを取得し、buffer handleを取得する過程でまずcache buffer handles栓を奪い取り、cache buffer handles栓に対する過度な競合を避けるために、各セッションはcacheの小さなbuffer handlesを許可され、保留セットとも呼ばれます..この予約セットの上限は暗黙的パラメータ_db_handles_Cached(デフォルトは5)によって制御され、これに基づいてセッションは、非常に複雑ではないSQLを実行するときに栓を繰り返し申請する必要はありません.非常に複雑な文が同時に存在し、大量のキャッシュを同時にpinする必要がある場合、空きhandleがある場合、セッションは手元の5つのcached buffer handles以外のhandleを要求することを許可されます.単一セッションのリソース使用量を制限するために、Oracleは、内部アルゴリズムによって常に各プロセスが合理的なシェアを維持できるようにします.「のbufferは、これにより単一セッションが同じ時間に持つことができる合計handle数がdb_block_buffers/processesに等しくなり、暗黙パラメータ_cursor_db_buffers_pinnedがこの値を指摘している.またcache buffer handlesには子栓がなく、親栓自体のみであるため、システムに複雑なSQLが大量に存在する場合、セッションができるcacheのbuffer handlesが需要を満たすのに十分でない場合、その栓は整列となるシステムのパフォーマンスのボトルネックは、潜在的なデッドロック/餓死の問題さえ発生する可能性があります.「T.ASKMACLEAN.COMでのネットユーザーの質問に応じて、cache Buffer handleに関する知識をもっと紹介します.cache buffer handle構造:
------------------------------
|  Buffer state object       |
------------------------------
|  Place to hang the buffer  |
------------------------------
|  Consistent Get?           |
------------------------------
|  Proc Owning SO            |
------------------------------
|  Flags(RIR)                |
------------------------------
cache buffer handleを見てみましょう
SO: 70000046fdfe530, type: 24, owner: 70000041b018630, flag: INIT/-/-/0x00
(buffer) (CR) PR: 70000048e92d148 FLG: 0x500000
lock rls: 0, class bit: 0
kcbbfbp: [BH: 7000001c7f069b0, LINK: 70000046fdfe570]
where: kdswh02: kdsgrp, why: 0
BH (7000001c7f069b0) file#: 12 rdba: 0x03061612 (12/398866) class: 1 ba: 7000001c70ee000
set: 75 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
dbwrid: 2 obj: 66209 objn: 48710 tsn: 6 afn: 12
hash: [700000485f12138,700000485f12138] lru: [70000025af67790,700000132f69ee0]
lru-flags: hot_buffer
ckptq: [NULL] fileq: [NULL] objq: [700000114f5dd10,70000028bf5d620]
use: [70000046fdfe570,70000046fdfe570] wait: [NULL]
st: SCURRENT md: SHR tch: 0
flags: affinity_lock
LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
where: kdswh02: kdsgrp, why: 0
# Example:
#