请教缓存命中率的问题

[复制链接]
查看11 | 回复9 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
通常的计算方法为:
Hit Ratio = 1 - (physical reads / (db block gets + consistent gets))
其中 db block gets + consistent gets 应该是逻辑读的总数,我在想命中率应该是 逻辑读/(物理读+逻辑读),所以为什么不是下面这样写:
Hit Ratio = 1 - (physical reads / (db block gets + consistent gets + physical reads))
是因为physical reads通常比较小,省掉了?还是我理解一直有误?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
差不多可以这么解释吧 理想的情况下 hit ratio 〉90%
所以 physical reads / (db block gets + consistent gets)<0.1
打个比方 1/10=0.1 1/10+1=0.09 没什么区别吧
一个简单的数学问题
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
原帖由 tigersun 于 2007-11-26 14:52 发表
通常的计算方法为:
Hit Ratio = 1 - (physical reads / (db block gets + consistent gets))
其中 db block gets + consistent gets 应该是逻辑读的总数,我在想命中率应该是 逻辑读/(物理读+逻辑读),所 ...

当然physical reads 要小这个小 才证明你的机器性能好 !
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
其中 db block gets + consistent gets 应该是逻辑读的总数,我在想命中率应该是 逻辑读/(物理读+逻辑读),所以为什么不是下面这样写:
Hit Ratio = 1 - (physical reads / (db block gets + consistent gets + physical reads))
是因为physical reads通常比较小,省掉了?还是我理解一直有误?

ps: 是你的误解,经过buffer cache的数据,物理读都会导致逻辑读
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
原帖由 steve197711 于 2007-11-26 15:04 发表
差不多可以这么解释吧 理想的情况下 hit ratio 〉90%
所以 physical reads / (db block gets + consistent gets)

这就让我费解了。
我的理解是,发生了物理读以后,如果再取数据到cpu中运算,就发生了物理读,那么就是说所有的“有用的物理读”(大概就那么个意思,我也不知道该怎么叫,就是从硬盘取数据到cpu中计算)之后,肯定要发生逻辑读。因此物理读的次数是包括在逻辑读里面,因此逻辑读就是分母了。
[ 本帖最后由 ilonng 于 2007-11-26 15:14 编辑 ]
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
to ilong :
我都搞不懂,你为什么老说读数据到cpu, 晕了
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
原帖由 棉花糖ONE 于 2007-11-26 15:12 发表
to ilong :
我都搞不懂,你为什么老说读数据到cpu, 晕了

因为数据是要到cpu中进行运算
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
逻辑读要耗费cpu,但是数据不是被读到cpu,数据都是读到内存,不管是到pga还是buffer_cache
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
物理读的数据都要到cache中,从cache中读的时候就是逻辑读了...
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
发现我们都错了,物理读的次数肯定是包含在逻辑读里面的。
文档内容:
consistent gets from cache:Number of times a consistent read was requested for a block from the buffer cache.
db block gets from cache:Number of times a CURRENT block was requested from the buffer cache.
physical reads cache Total number of data blocks read from disk into buffer cache.
有哪种情况,出现物理读而没有逻辑读的,就是说数据读到buffer cache中以后就啥事情都不做了,这种情况有没有?
如果有的话,就有可能出现物理读大于逻辑读。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行