statistics

本文章为网络笔记,看了warehouse老师的视频受益匪浅,更是感觉自己技术太过初级,特写了本笔记,方便以后反复学习!
如有任何不妥,请发邮件至102448567@qq.com删除文章!
关于warehouse:
http://blog.itpub.net/19602/viewspace-1059211/
11gR2视频第四版 7_06_statistics
statistics:session或者instance级别衡量数据库性能的一些指标
session级别

v$sesstat

sessionsid、统计信息的编号、值
在这里插入图片描述
v$statname数据库中有哪些统计信息,也就是从哪些方面去衡量数据库的性能
在这里插入图片描述
statistic中的redo size为例,模拟statistics的用途

SELECT b.STATISTIC#,
       b.name,
       a.value
      FROM v$sesstat a,v$statname b
     WHERE A.STATISTIC# = b.STATISTIC#
     AND b.statistic# = 194
     AND a.sid = (SELECT distinct sid FROM v$mystat)
     STATISTIC# NAME 		     VALUE
---------- -------------------- ----------
       194 redo size			 0
       
SQL> insert into t1 values(5,'sunqi',20);

1 row created.

SELECT b.STATISTIC#,
       b.name,
       a.value
      FROM v$sesstat a,v$statname b
     WHERE A.STATISTIC# = b.STATISTIC#
     AND b.statistic# = 194
  	 AND a.sid = (SELECT distinct sid FROM v$mystat);

STATISTIC# NAME 		     VALUE
---------- -------------------- ----------
       194 redo size		       304

衡量一个sessoin中 不管你做什么动作,Oracle总会从一个角度去判断这个session及数据库造成了多大的负载,用统计信息来表现出来
session logical reads会话逻辑读,要读一个表中的数据,数据在数据块中放着,首先要看这个块在不在内存要是不在就把块从数据文件中读到内存中,读一个块叫物理读,这个块在内存(buffer)中之后访问内存中的块每访问一次就是一次逻辑读,当一个session的逻辑读很大的时候意味着这个session执行过的sql语句非常大,这个时候负载就比较大了
在这里插入图片描述
实验模拟逻辑读增大

SELECT b.STATISTIC#,
       b.name,
       a.value
      FROM v$sesstat a,v$statname b
     WHERE A.STATISTIC# = b.STATISTIC#
     AND b.statistic# = 14
    AND a.sid = (SELECT distinct sid FROM v$mystat);

STATISTIC# NAME 						   VALUE
---------- -------------------------------------------------- ----------
	14 session logical reads				      58
	
SQL> select * from t1;

	ID NAME 						     AGE
---------- -------------------------------------------------- ----------
	11 erha 						      31
	 2 lisi 						      22
	 3 bb							      20
	 4 zhaoliu						      20
	 5 sunqi						      20
	 5 sunqi						      20
	 5 sunqi						      20
	 5 sunqi						      20
	 5 sunqi						      20

9 rows selected.

SELECT b.STATISTIC#,
       b.name,
       a.value
      FROM v$sesstat a,v$statname b
     WHERE A.STATISTIC# = b.STATISTIC#
     AND b.statistic# = 14
     AND a.sid = (SELECT distinct sid FROM v$mystat);

STATISTIC# NAME 						   VALUE
---------- -------------------------------------------------- ----------
	14 session logical reads				      66

自从这个instance起来之后所有sessionstatistics会汇总到instance上的statistics可以查这个视图

v$sysstat

value降序排序关注排在最前边比较大的
在这里插入图片描述
看这个v$sysstat可以了解系统哪些资源消耗比较大,这样哪些资源就有可能比较紧张
v$filestat基于文件级别的statistic
自从instance起来以来数据文件读了PHYRDS次,写了PHYWRTS次,物理读了PHYBLKRD个块,写了PHYBLKWRT个块,SINGLEBLKRDS单块读(一次读一个块)一共读了多少次

v$开头的这些视图基本上都是在内存中的,重启之后就没有了所以有性能问题谨慎重启,重启之后就没有这些统计信息了
关于buffer的统计信息

v$buffer_pool_statistics

计算一下buffer cache的命中率
DB_BLOCK_GETS+CONSISTENT_GETS是在内存中命中的块
PHYSICAL_READS是在磁盘上命中的块

SELECT 100 * round ((DB_BLOCK_GETS+CONSISTENT_GETS)/(DB_BLOCK_GETS+CONSISTENT_GETS+PHYSICAL_READS),4) 
     FROM dual

在这里插入图片描述
sga的统计信息

v$sga_target_advice

在这里插入图片描述
segment的统计信息,表、索引等等都是segment

v$segment_statistics

value比较多的一般就是大表或者是核心业务表,statistic_namelogical reads就说明这个表访问的很频繁
在这里插入图片描述
segmentstatistics Oracle一共提供了19个(Oracle11204)

SELECT *
             FROM v$segstat_name

内存够用的情况下一般衡量单个sql要是logical reads很低的话那这个sql性能就不会太差,消耗CPU的资源也不会太多
在这里插入图片描述
统计信息就是记录的实例的活动情况

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值