zoukankan      html  css  js  c++  java
  • 数据缓冲区的命中率

    Oracle文档:

    db block gets: Accesses to the current image of a block
    consistent gets: Accesses to a read-consistent image of a block
    physical reads: Number of blocks read from disk

    Hit Ratio = 1 – (physical reads/(db block gets + consistent gets))

    我的理解:
    db block gets: 获取数据的当前映像所读取的数据块。
    Oracle为了获取数据的当前映像,会先去数据缓存(Data cache)中找,如果有就直接读取(逻辑读),如果没有再去数据文件中读取(物理读)。

    consistent gets: 获取数据的读一致性映像所读取的数据块。
    应该仅发生在用户查询时该数据块正在被修改的情况下,则数据的前映像在回滚段中,Oracle为了获取一致性映像,必须从回滚段中读取(物理读)。

    physical reads: 所有物理读的总数。

    从而: db block gets + consistent gets 就是所有读取操作涉及的数据块

    则物理读在所有读操作中所占的比例就是:

    physical reads/(db block gets + consistent gets)

    数据高速缓存的命中率就应该是:

    Hit Ratio = 1 – (physical reads/(db block gets + consistent gets))

    明白了,总结如下,大家看对不对
    (1)buffer_gets=db block gets + consistent gets = LOGIC IO(逻辑读次数)
    (2)consistent get : 在一致读模式下所读的快数,包括从回滚段读的快数。 
      db block gets : 在当前读模式下所读的快数,比较少和特殊,例如数据字典数据获取,在DML中,更改或删除数据是要用到当前读模式。
    (3)db block gets : current mode , 不管这个块上的数据是否可能存在 before image ,也就是说不管是否存在回滚中数据可以 回滚,只看见当前最新块的数据,即使别人正在更新,也看见别人更新状态的数据,比如dml的时候就不需要看见别人更改前的数据,而是看见正在更改的,当然同时,若操作相同数据则被lock住。也就是说一次查询中看见的数据可能不在同一个时间点上,比如一个大的dml,当dml 开始更新一个非常大的表后,这个表更新的过程中,有一个进程去把该表末尾的一个记录更新了,然后这个大更新抵达该记录的时候会被阻塞的,若该进程事物提交,则大更新会覆盖该事务的更新,也就是说,这个大更新所看见的数据是当前的,不具有时间点的一致性,所以叫 current mode,个人认为db block gets这个词用的不好, 容易让人误解. 如果改成inconsistent gets可能会更准确一些

    consistent gets :consistent_gets是从回滚段中读到的前映(或叫读取一致性影象), 看见的数据是查询开始的时间点的,所以若存在block在查询开始后发生了变化的情况,则必须产生 before image 然后读数据,这就是一致读的含义
    查询就是表示 consistent gets (query mode),因为查询要保证所获取的数据的时间点的一致性,所以叫一致读,即使是从当前 buffer 获得的数据,也叫 consistent gets ,这仅仅表达一种模式一种期望,并不表示真实的是从 当前buffer 获得 还是从回滚段获取数据产生的 bufore image 。
     
     
     
     
  • 相关阅读:
    数据结构与算法(一)-初识
    程序员如何用技术变现?(取其精华去其糟粕)
    python3 os模块
    实现DevOps需要的工具
    jQuery 简单案例
    jquery添加的html元素按钮为什么不执行类样式绑定的click事件
    centos6 自带python2.6升级python2.7+
    html之多行文本textarea 及下拉框select(12)
    html之input标签(11)
    django(python manage.py imgrate)同步数据库出错后的解决办法
  • 原文地址:https://www.cnblogs.com/elikun/p/10118508.html
Copyright © 2011-2022 走看看