1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Oracle数据库性能优化之内存磁盘

Oracle数据库性能优化之内存磁盘

时间:2024-04-27 01:35:28

相关推荐

Oracle数据库性能优化之内存磁盘

数据库|mysql教程

Oracle数据库性能优化,Oracle数据库性能优化之内存

数据库-mysql教程

有什么应用网站源码,vscode怎么运行输出,ubuntu手机测试,tomcat ip访问不,goweb爬虫,php游戏后端,sem和seo的关系,课程网站开发运行环境,微信营销 模板免费下载lzw

Oracle一般采用自动内存管理来管理系统内存,由oracle自动管理和调整数据库实例的内存大

网址监控系统源码,vscode编程乱码了,ubuntu按照vim,sql+tomcat,sqlite绿色版中文,python爬虫和数据分析书籍,php保存 base64,阳泉seo推广推荐,淘客商品采集网站,易语言怎么插入一个网页,ih5模板下载lzw

c 编程源码下载,ubuntu升内核版本,极域和tomcat冲突,爬虫总结心得,php拿不到header信息,seo 过时lzw

1,内存结构优化概述

1.1 缓冲区

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

1.2 自动内存管理

Oracle一般采用自动内存管理来管理系统内存,由oracle自动管理和调整数据库实例的内存大小。在自动管理模式下,首先对初始化参数MEMORY_TARGET(目标内存大小)和MEMORY_MAX_TARGET(最大内存大小)进行配置,数据库调整目标内存大小,根据需要不断重新调整sga和pga的缓冲区大小。

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 ;

NAMEPHYSICAL_READS DB_BLOCK_GETSCONSISTENT_GETS Hit Ratio

——————– ————————— ————— ———-

DEFAULT44480354387 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 210 0

BODY 28468616 284582421818 46

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。