一、severver与bufffer cache之间数据交互
1) 第一步,server process 通用过hash函数得到hash值,判定请求块是否在于buffer cache里;
如果找到了,会移动到LUR算法开头;这种操作是逻辑读;返回给server process;
如果找不到,server process直接从数据文件读取数据块; (Server process主动将Dirty buffer从LRU List移动到Dirty List)
2) 在从数据文件读取数据块之前,server process从LRU list查找空闲buffer;同时会把已发现的所有Dirty buffer
从LRU List移动到Dirty List(Checkpoint Queue)中去,以便写到磁盘上
3) 当checkpoint queue队列超过限制时,severr process唤醒DWWn把脏数写到碰盘上;
(Checkpoint Queue阀值到达,导致Server Proceess通知DBWn写赃数据)
这个阀值是25%,当然这也是触发我们DBWn进程的一个条件
SQL> select kvittag,kvitval,kvitdsc from x$kvit
where kvittag='kcbldq';
KVITTAG KVITVAL
---------------------------------------------------------------- ----------
KVITDSC
----------------------------------------------------------------
kcbldq 25
large dirty queue if kcbclw reaches this
4)severr process扫描了LRU超过一个阀值也没有找到足够的Free的buffe
、Server process触发DBWN进程开始写脏数据块;Server process会处于free busy wait的等待事件.这个阀值是40%,同时这还是触发我们DBWn进程的一个条件
SQL> select kvittag,kvitval,kvitdsc from x$kvit
where kvittag='kcbfsp';
KVITTAG KVITVAL
---------------------------------------------------------------- ----------
KVITDSC
----------------------------------------------------------------
kcbfsp 40
Max percentage of LRU list foreground can scan for free
5)同时,因为Checkpoint Queue的引入,DBWn还会主动的扫描LRU List,将我们发现的Dirty Buffer从LRU List移动到checkpoing queue,扫描LRU List的范围是25%.
(DBWn主动扫描LRU的25%,依照结果从LRU中移动Dirty Buffer到Dirty List中,)
SQL> select kvittag,kvitval,kvitdsc from x$kvit
where kvittag='kcbdsp';
KVITTAG KVITVAL
---------------------------------------------------------------- ----------
KVITDSC
----------------------------------------------------------------
kcbdsp 25
Max percentage of LRU list dbwriter can scan for dirty
6)如果找到一空间buffer ,server process 从数据文件中读取数据块到buffer cache中.server process 同 时把数据块移动到LRU
二 唤醒DBWn进程工作条件
1.checkpoint queue 超过了阀值;
2.severr process扫描了LRU超过一个阀值也没有找到足够的Free的buffe
3.Alter tablespace offline or Alter tablespace begin backup;
4.drop a segment;
5.clear shutdown;
三 调优目标和手段
目标:1.severr process在内存里找到数据
2.没有buffer cache 等待事件
调整指标:
1.wait event
2.cache hit ratio
3.v$db_cache_advice
调优手段:增大尺寸,使用多种buffer pools,固化到内存,一些排序直到读到内存里
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13824386/viewspace-700011/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13824386/viewspace-700011/