WEB开发网
开发学院数据库Oracle Oracle数据库性能优化技术 阅读

Oracle数据库性能优化技术

 2006-08-06 12:00:42 来源:WEB开发网   
核心提示: select sum(reloads)/sum(pins) from v$librarycache 应小于1%数据字典缓存:select sum(getmisses)/sum(gets) from v$rowcache 应小于15%由于程序设计人员的水平参差不齐,可能存在大的匿名块,Ora

select sum(reloads)/sum(pins) from v$librarycache 应小于1%

数据字典缓存:

select sum(getmisses)/sum(gets) from v$rowcache 应小于15%

由于程序设计人员的水平参差不齐,可能存在大的匿名块,这会导致SQL不能重用,因此需要找出大的匿名块以转换为存储过程达到重用:

select * from v$sqlarea where command_type=47 and length(sql_text)>500

而对于一些应用系统非常频繁使用的SQL对象如存储过程、函数、包等,可以通过钉在内存中的方式来防止由于共享池太小被移出:

exec dbms_shared_pool.keep(对象名)

数据块缓冲区(Db block buffer):

数据块缓冲区存放用户所经常访问的数据文件的数据块内容以及用户修改的数据内容。数据库把数据文件里的内容读到内存中,下次需要时直接从内存中读取,从而减少了磁盘的I/O和响应时间。当然,一般只在比较小的数据表(如常用代码表)才缓存到内存中。

由于数据快缓冲区中不可能存放所有的数据,因此可使用LRU算法来确定移出哪些数据块,但又尽量保证有较高的数据命中率。

查看数据块命中率的SQL语句为:

select 1-(phy.value/(cur.value+con.value)) from v$sysstat cur,v$sysstat con,v$sysstat phy

where cur.name='db block gets' and con.name='consistent gets'

and phy.name='physical gets'

如果这个命中率小于0.85,就要考虑为数据块缓冲区分配更多的内存了。

重做日志缓冲区(Log buffer):

重做日志缓冲区存放从用户内存区复制来的每个DML或DDL语句的重做条目。如果这个缓冲区分配太小会导致没有足够的空间来放重做条目而等待。

上一页  1 2 3 4 5 6  下一页

Tags:Oracle 数据库 性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接