视图V$SYSSTAT和V$SESSTAT的描述
==================================
v$sysstat显示了实例启动以来,实例的增量统计信息。查看统计的名称需要连接v$statname视图,9i开始不需要了,该视图自带了name字段。
select n.name, s.value
from v$statname n , v$sysstat s
where n.statistic# = s.statistic#
order by n.class, n.name
/
v$sesstat显示了每个session开始以来的增量session统计。需要连接v$statname视图查看名称。下面这个查询将返回当前session的session id(并不在所有环境中都正常使用,尤其是两阶段任务和SQL*Net结构中,因为terminal为null)
select s.sid
from v$process p, v$session s
where p.addr = s.paddr
and s.terminal = userenv('terminal')
/
通过session id从v$sesstat查看统计信息。
select n.name, s.value
from v$statname n , v$sesstat s
where s.sid = &sid
and n.statistic# = s.statistic#
order by n.class, n.name
v$sysstat/v$sesstat视图常用于快照的采集。两个快照中v$sysstat/v$sesstat的不同,就是这段时间内活跃的信息(所以快照之间不能有关闭实例的情况发生,那样统计信息就重新计算了)
注意:大多数统计信息的计算总是增量累计的,但有一些统计根据计时器增量统计,只有当TIMED_STATISTICS = TRUE设置的时候才统计。
相关统计的描述
==================================
SORTS (MEMORY)
所有排序都在内存中完成
SORTS (DISK)
排序使用了临时段。
这2个统计之和是所有排序的数量,如果存在大量的排序,可能需要修改应用或SQL语句,减少排序的发生。增大SORT_AREA_SIZE可以使得更多的排序在内存中完成,但同时也需要使用更多的内存。
SORTS (ROWS)
所有排序中涉及的行的总数量。
TABLE SCANS (SHORT TABLES)
全表扫描涉及4个或4个以下的表的数量。短表的扫描采用全表扫描比使用索引有更好的效果,通常全表扫描只有1次IO产生。
TABLE SCANS (LONG TABLES)
全表扫描涉及5个或5个以上的表的数量。访问长表时,如果返回少于10-20%的行,那么使用索引有更高的效率。如果长表的访问必须使用全表扫描,就不会有一个较好的buffer cache命中率。增大DB_BLOCK_BUFFERS或db_cache_size并不能帮助长表扫描,因为这些块将被放在LRU链的底部,但是增大DB_FILE_MULTIBLOCK_READ_COUNT可以有助于减少磁盘IO(并不是CPU的使用)。
这两个统计表示所有全表扫描的数量。
TABLE SCAN BLOCKS GOTTEN
所有全表扫描访问的块的数量。短表全表扫描最多4个数据块,排除掉短表扫描,可以估计出平均每个长表的全表扫描涉及的数据块数量。
TABLE SCAN ROWS GOTTEN
所有全表扫描访问的行的数量。它并不是返回行的数量,因为只有符合要求的行才返回。
TABLE FETCH BY ROWID
通过rowid访问的行数。它计算了所有通过索引(通过rowid指向行)访问的行和所有直接使用rowid(where rowid = :rowid)访问的行。使用了非选择性索引会造成该统计大量增长。
TABLE FETCH CONTINUED ROW
通过链接行获取1行的次数。该值较高说明行存在链接。
注意:行中如果有较长的字段,通常都有链接,因为它们不能装载在一个数据块中。如有大字段,行链接几乎不可避免。
CLUSTER KEY SCANS
扫描cluster key的次数
CLUSTER KEY SCAN BLOCK GETS
通过扫描cluster key访问的数据块的数量。该统计与"CLUSTER KEY SCANS"的比率,可以估算出平均每次cluster key扫描的数据块数量。较为理想的情况,该比率应该为1。每个cluster key的数据应该装载在1个数据块中。
CONSISTENT GETS
一般性查询,从buffer cache中访问的数据块的数量。(SELECT不包含for update语句)
DB BLOCK GETS
INSERT,UPDATE,DELETE,SELECT FOR UPDATE,从buffer cache中访问的数据块的数量。
以上2项统计之和为逻辑读的数量。
PHYSICAL READS
物理读的数量。该数量通常结合逻辑读的数量,去计算cache的命中率。
BUFFER BUSY WAITS
数据块访问失败的次数,因为另一个进程在一个排他模式中持有该块。该统计如果超过逻辑读的10%,需要使用V$WAITSTAT检查争用情况。
阅读(995) | 评论(0) | 转发(0) |