设为首页 加入收藏

TOP

Oracle彻底优化――优化内存(二)
2014-11-24 08:11:59 来源: 作者: 【 】 浏览:2
Tags:Oracle 彻底 优化 内存
须先查看数据字典缓冲区的使用情况及效果,然后依此来进行优化。数据字典缓冲区的使用情况记录在动态性能表V$ROWCHACHE中,其中有如下几列:
PARAMETER:记录某类特写数据字典项的统计,其值以‘de_’开始,例如某文件描述的统计为‘de_files’。
GETS:是对相应项请求次数的统计。
GETTMISSES:是引起缓冲区出错的数据请求次数。
可用如下语句来查询V$ROWCHACHE表:
SQL>SELECT (SUM(getmisses)/SUM(gets))*100 ”DaTa Dictionary Cache Ratio”FROM V$ROWCHACHE;
对于贫繁访问的数据字典缓冲区,GETMISSES与GETS之比要小于10%到15%。若大于此百分数时,则应考虑增加数据字典缓冲区的容量,即要增加SHARED_POOL_SIZE或者DB_BLOCK_BUFFERS初始化参数的值。
使用多线索服务器时共享池的优化
在多线索服务器结构中,会话期信息被存放在共享池中,它包括SQL专用区和排序区。在使用多线索服务器时,要增大共享池,以满足需要。这也可通过增加SHARED_POOL_SIZE的参数值来实现。
可通过查询(要求有SELECT ANY TABLE特权)动态性能表V$SESSTAT来衡量会话信息的多少。例如:
SQL>SELEC SUM(value) ||’bytes’ ”Total memory for all session”
2>FROM V$SESSTAT
3>WHERK name=‘session memory’;
SQL>SELECT UM(value)|| ‘bytes’ “Total max men for all sessions”
2>FROM V$SESSTAT
3>WHERE name=‘max session memory’;
其中,“session memory”是分配给会话的内存字节数;“max session memory”是分配给会话的最大内存字节数。


优化缓冲区
(1)获取缓冲区活动情况
为了优化缓冲区,首先应了解缓冲区的活动情况。这可以通过查询动态性能表(需有SELECT ANY TABLE特权)V$SYSSTAT来获得。
SVRMGR> select name ,value from v$sysstat
2> where name in('db block gets','consistent gets','physical reads');
NAME VALUE
db blockgets 3437
consistent gets 30500
physica reads 1963
3 rows selected.
其中,“db block gets”和“consistent gets”的值是请求数据缓冲区中读的总次数。“physical reads”为请求数据时引起从盘中读文件的次数。

(2)缓冲区命中率
从缓冲区读的可能性的高低称为缓冲区命中率。它可用如下公式计算:
Hot Ratio=1-(physical reads/(db block gets+consistent gets)
缓冲区命中率越高,其速度就越快。如果命中率低于60%或70%时。则应增加缓冲区(即DB_BLOCK_BUFFERS),以改进性能。根据公式可以计算出本例中的Hot Ratio=1-(1963/(3437+30500)=92%。 如果缓冲区的命中率很高,希望在保持良好性能下适当减少缓冲区,这时可减少DB_BLOCK_BUFFERS的值,其最小值为4。

作者“Roby sky”

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL慢查询分析 下一篇mysql文件的导入

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)
·关于 MySQL 数据库学 (2025-12-26 23:20:16)
·SOLVED: Ubuntu 24.0 (2025-12-26 22:51:53)
·Linux 常用命令最全 (2025-12-26 22:51:50)