數據庫緩衝區緩存(database buffer cache)
BUFFER CACHE:
作用:用於緩存數據物理磁盤上的磁盤塊,從而加快對磁盤上數據的訪問。
組成:
Keep pool : 緩存那些需要經常查詢但是又容易被默認緩衝區置換出去的對象,數據讀取到keep pool中,會一直保留在內存 中,不會被刷新出去,比如整天頻繁使用的表,放在保留池中,能夠有效的減少物理IO。
Recycle pool : 回收池與保留池正好相反,用於緩存臨時使用的,不被經常使用的較大的對象,把這些段與保持池和默認池 中的段分開,防止保持池和默認池中的數據由於老化而退出緩存。
Default pool : 當沒有指定時,數據就會放在默認池中,也就是說,放在默認池的數據利用的是LRU機制,指定DEFAULT將 適用默認的緩衝池。這個選項適用於沒有分配給KEEP緩衝池和RECYCLE緩衝池的其它數據庫對象。
(10g中sga自動管理,ORACLE只會幫助我們管理default pool)
buffer狀態:
0.free
1.xcur 當前正在被使用,在單實例數據庫中current塊就等於xcurrent塊
2.scur 在多實例數據庫RAC環境中才會出現scurrent塊
3.cr 爲了保證讀一致性而使用undo空間構造的塊
4.read 正在從磁盤裏讀入buffer中的塊
5.mrec 進行media recovery時所生成的塊
6.irec 進行instance recovery時所生成的塊
7.write 通過DBWn從buffer中寫入磁盤數據文件中的塊
讀方式:
邏輯讀:存在緩存
物理讀:發生物理I0消耗資源
【注】:①查詢buffer cache中有多少buffer的語句 select count(*) from x$bh;