oracle命中率查看,oracle查询命中率调优的一个方法(有用呦)

构建一个企业级的应用系统,往往数据库成为最终的一个负载瓶颈,在我们优化完sql语句、优化完应用程序之后,数据库的调优必不可少,下面就基于sql查询的命中率的oracle调优做一个简单的说明。

1.先检验数据库的查询命中率,请执行下面的2组sql语句,并且分别记录修改之前的数值。

第一组sql语句如下:

select 100- (j.value-( a.value+b.value )) /(u.value+v.value-a.value-b.value)*100 as 命中率 from

(select value from v$sysstat where name ='physical reads direct' ) a,

(select value from v$sysstat where name ='physical reads direct (lob)' ) b,

(select value from v$sysstat where name ='physical reads') j,

(select value from v$sysstat where name ='consistent gets') u,

(select value from v$sysstat where name = 'db block gets') v ;

第二组sql语句如下:

select sum(gets) "请求存取数",sum(getmisses) "不命中数" , (1-sum(getmisses)/sum(gets) )*100 "命中率"

from v$rowcache;

2.如果第一组sql语句执行的结果是<90%,则说明需要调整oracle数据库的内存(SGA的大小),第二组sql语句作为一个参照。

一般经验:在 1G 的内存的服务器上,我们能分配给SGA的内存大约为400—500M 。若是2G的内存,大约可以分到1G的内存给 SGA,8G 的内存可以分到5G的内存给SGA。

考虑到数据库服务器的机器内存大小为2G, 可以按照以下脚本执行修改:

【注:请用具有dba权限的用户登录“login as sysdba”登录,可以用pl/sql工具】

--修改前备份一下sqfile

create pfile='d:\oracle\ora9init.ora' from spfile;

--修改共享池大小

alter system set shared_pool_size =256M scope=spfile;

--修改缓冲池大小

alter system set db_cache_size=896M scope=spfile;

--大缓冲池

alter system set large_pool_size=100m scope=spfile;

--修改链接进程数

alter system set processes=1500 scope=spfile;

--会话数

alter system set sessions=900 scope=spfile;

--事务数

alter system set transactions=900 scope=spfile;

--打开游标数

alter system set open_cursors =1000 scope=spfile;

3.用pl/sql工具修改了这些参数之后,需要重启oracle服务。当重启之后再查执行开始的2组sql语句,对比数值的差异。

posted on 2010-07-21 06:37 风 阅读(264) 评论(0)  编辑  收藏 所属分类: Oracle

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值