设为首页 加入收藏

TOP

Oracle数据库性能优化之内存磁盘(一)
2015-11-10 12:16:57 来源: 作者: 【 】 浏览:0
Tags:Oracle 数据库 性能 优化 内存 磁盘

1,内存结构优化概述
1.1 缓冲区
影响数据库运行性能的缓冲区包括可以共享的SGA和服务器进程私有的pga两大类,其中sga又包括共享池、大型池、java池、数据缓冲区、流池、redo log缓冲区。


1.3 共享内存sga的自动管理
如果数据库实例启动时候动态将初始化参数SGA_TARGET设置为0,则自动共享内存管理被禁止使用。每个缓冲区的大小由初始化参数文件中的相应参数来决定。如果有必要,可以通过手动设置初始化参数DB_CACHE_SIZE,SHARED_POOL_SIZE,LARGE_POOL_SIZE,JAVA_POOL_SIZE,STREAMS_POOL_SIZE,来调整共享内存区各个缓冲区的大小。一般通常有一些内存组件大小需要管理员手动设置,不受自动内存管理的影响,比如重做日志缓冲区;KEEP、RECYCLE以及基于非标准数据块的缓冲区;固定的SGA和其他内部分配的内存区。手动调整这些内存区时候,需要设置的初始化参数有DB_KEEP_CACHE_SIZE,DB_RECYCLE_CACHE_SIZE,DB_nK_CACHE_SIZE,LOG_BUFFER,这些内存区的分配都是从SGA_TARGET指定内存中获取,SGA_TARGET的余下部分供自动共享内存管理的各个缓冲区使用。


1.4 动态改变缓冲区大小
如果系统没有采用自动内存管理或者自动内存共享内存管理功能,可以使用ALTER SYSTEM语句配置初始化参数DB_ACHE_SIZE,JAVA_POOL_SIZE,LARGE_POOL_SIZE,LOG_BUFFER,SHARED_POOL_SIZE等。


2,数据缓冲区调整
通过下列两种方式检查数据缓冲区设置是否合理:


查看数据库缓冲区的命中率,执行命令:


select 1 - ((physical.value - direct.value -lobs.value) / logical.value)


"Buffer Cache Hit Ratio"


from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstatlogical


where physical.name = 'physical reads'


anddirect.name='physical reads direct'


andlobs.name='physical reads direct (lob)'


andlogical.name='session logical reads';


运行结果:


SQL> select 1 - ((physical.value - direct.value - lobs.value) /logical.value)


2? ? "Buffer Cache HitRatio"


3? ? from v$sysstatphysical,v$sysstat direct,v$sysstat lobs,v$sysstat logical


4? ? where physical.name ='physical reads'


5? ? and direct.name='physicalreads direct'


6? ? and lobs.name='physical readsdirect (lob)'


7? ? and logical.name='sessionlogical reads';


Buffer Cache Hit Ratio


----------------------


? 0.958117758479709


SQL>


惯例来说,上述语句当>0.9实说明调整充分的。命中率是高的,这里已经为0.95,所以命中率还是比较可观的。对于数据库系统而言,数据缓冲区中包括的DEFAULT缓冲池就足够应用需要了。


查询数据缓冲区中每个缓冲区的逻辑读和物理读的信息,可以查询动态性能视图v$buffer_pool_statistics,例如:


SQL> selectt1.name,t1.PHYSICAL_READS,t1.DB_BLOCK_GETS,t1.CONSISTENT_GETS,1-(t1.PHYSICAL_READS/(t1.DB_BLOCK_GETS+t1.CONSISTENT_GETS))"Hit Ratio"


2? from v$buffer_pool_statisticst1


3? ;


NAME? ? ? ? ? ? ? ? PHYSICAL_READS DB_BLOCK_GETSCONSISTENT_GETS? Hit Ratio


-------------------- --------------------------- --------------- ----------


DEFAULT? ? ? ? ? ? ? ? 44480354387? ? 571096618? ? 33595740186 -0.3018575


SQL>


调整数据缓冲区大小


如果数据缓冲区小于90%,就要考虑调整数据缓冲区大小。增大数据缓冲区之前,先看看V$DB_CACHE_SIZE(select * from v$db_cache_advice),确定数据缓冲区增大到多少能够显著降低物理I/O的数量,然后动态修改初始化参数DB_CACHE_SIZE。初始化参数DB_CACHE_SIZE对应的是标准数据缓冲区大小,如果要修改非标准的数据缓冲区大小,需要修改初始化参数DB_nK_CACHE_SIZE(n取值为2、4、8、16、32,且n不能是标准数据块大小)


3,共享池调整
3.1 库缓存命中率
可以通过查询动态性能视图v$librarycache(select * from v$librarycache;),该视图保存了数据库最近一次启动以来库缓存活动的统计信息,每一行记录反映了库缓存中一个条目类型的统计信息,通过namespace列值来识别每个条目类型。例如:


selectt1.NAMESPACE,t1.PINS,t1.PINHITS,t1.RELOADS,t1.INVALIDATIONS from v$librarycachet1 order by t1.NAMESPACE;


SQL> selectt1.NAMESPACE,t1.PINS,t1.PINHITS,t1.RELOADS,t1.INVALIDATIONS from v$librarycachet1 order by t1.NAMESPACE;


NAMESPACE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? PINS? ? PINHITS? ? RELOADS INVALIDATIONS


-------------------------------------------------------------------------- ---------- ---------- -------------


APP CONTEXT? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2? ? ? ? ? 1? ? ? ? ? 0? ? ? ? ? ? 0


BODY? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 28468616? 28458242? ? ? 1818? ? ? ? ? ? 46


CLUSTER? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 114902? ? 114198? ? ? ? ? 0? ? ? ? ? ? 0


DBINSTANCE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0? ? ? ? ? 0? ? ? ? ? 0? ? ? ? ? ?

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL和Oracle时区设置比较 下一篇PLSQL 经常自动断开失去连接的解..

评论

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