oracle Performance analysis

来源:互联网 发布:程序员修真之路txt 编辑:程序博客网 时间:2024/04/29 19:54

作为一个基于数据库的软件架构,无可避免在设计时候必须注意数据的处理与读取,如果处理不好,往往这是系统运行性能瓶颈的关键之一。而作为一个数据库的管理维护人员,则是需要通过对数据库相关数据的分析,来得出引出性能问题的原因,一般由以下几个方面作为参考,但是这也并不是唯一的方法,我认为根本还是系统的设计架构,以及在编写程序时不随意,负责的态度有关。

数据库性能分析:
1.数据缓冲区高速缓存
  指标:缓冲区命中率,v$sysstat
  select round((1-(sum(decode(name,'physical reads',value,0))/(sum(decode(name,'db block gets',value,0))+sum(decode(name,'consistent gets',value,0))))),2)"Data Buffer Hit RAtio" from v$sysstat;=0.77
  性能不良好,应接近1,>0.95。
  度量oracle在内存中杜取的数据块的相对数量。
 
  改良:增加db_block_buffers
  13:数据库初始化参数中:buffers = 40960,size = 8192K,总共:300M左右。
 
2.库高速缓存区
  用于缓存sql,v$librarycache
  指标:pins/reloads/命中率
  select sum(pins) "total pins", sum(reloads) "total reloads", round((1-sum(reloads)/sum(pins)),2) "hit ratio" from v$librarycache = 0.99

select sum(pins)/(sum(pins)+sum(reloads)) from v$librarycache
  性能较好

  关联参数:共享池大小
  13:shared_pool_size = 262144000,单位字节,约256M
 
3、字典高速缓存
   用于缓存字典信息V$rowcache;
   select 1-sum(getmisses)/sum(gets) from v$rowcache = 0.9956336(接近1为最好)
   性能良好;
   关联参数:共享池大小
4、sql的性能:
   一般,sql影响内存缓冲区与库高速缓冲区;应提高sql得重用性,节省开销,提高性能。
   指标:每条语句的平均用户,用户数量越多,代码性能越高
          平均执行次数,可重用频率越高,性能约好
   select round((sum(users_opening)/count(*)),2) "user",round((sum(executions)/count(*)),2) "exe" from v$sqlarea = 0.01,670
   性能良好
5.固定应用程序代码
   rem this script check i/o
  select b.sql_text,a.disk_reads,a.executions,c.username from v$sqlarea a,v$sqltext_with_newlines b,dba_users c
where a.parsing_user_id = c.user_id
and a.address = b.address
and a.disk_reads > &Threshold_disk_reads
order by a.disk_reads desc,b.piece;

原创粉丝点击