上机试了下;
SQL> select name,physical_reads from v$buffer_pool_statistics
2union
3select name,value from v$sysstat where name in ('physical reads','physical reads direct','physical reads direct (lob)');
NAME
PHYSICAL_READS
---------------------------------------------------------------- --------------
DEFAULT
2288
physical reads
2336
physical reads direct
48
physical reads direct (lob)
0
我的buffer 里只有一个default池,那么这里可以证实v$sysstat 的
physical reads -physical reads direct-physical reads direct (lob) =v$buffer_pool_statistics的PHYSICAL_READS
说明v$sysstat 的physical reads 是统计了整个系统的物理读,(不经过cache的也算在内),v$buffer_pool_statistics的PHYSICAL_READS只是统计了单个pool的物理读,自然不涉及到不通过buffer的reads,
SQL> select name,consistent_gets,db_block_gets from v$buffer_pool_statistics
2union
3select name,value,class from v$sysstat where name in ('session logical reads');
NAME
CONSISTENT_GETS DB_BLOCK_GETS
---------------------------------------------------------------- --------------- -------------
DEFAULT
71243 82561
session logical reads
131808
1
这是逻辑读的比较,在这里可以看到,
v$sysstat 的session logical readsv$buffer_pool_statistics的CONSISTENT_GETS+DB_BLOCK_GETS;
再看下;
SQL> select name,consistent_gets,db_block_gets from v$buffer_pool_statistics
2union
3 select name,value,class from v$sysstat where name in ('session logical reads','consistent gets','db block gets');
NAME
CONSISTENT_GETS DB_BLOCK_GETS
---------------------------------------------------------------- --------------- -------------
DEFAULT
73298 87573
consistent gets
124659
8
db block gets
14275
8
session logical reads
138934
1
在v$sysstat中也有 consistent gets ,db block gets这才是 consistent gets +db block gets= session logical reads ;
这里恐怕也有统计范围的问题吧,(这个和v$buffer_pool_statistics里面的consistent_gets和db_block_gets是怎么得到一致的呢)
我的水平有限,大家多来帮帮
-
|