专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle 性能分析与诊断|Buffer Cache Hit Ratio 诊断

ins518 2024-10-22 14:45:11 技术文章 17 ℃ 0 评论

Oracle 查询数据时可分3 种情况读取数据:db block gets、consistent gets、physical reads,它们三者之间的关系大致可概括为:逻辑读(logical reads)指的是Oracle 从内存读到的数据块数量。一般来说是'consistent gets' + 'db block gets'。当在内存中找不到所需的数据块的话就需要从磁盘中获取,于是就产生了'physical reads'。

产生 Physical reads(物理读)的主要原因如下。

?>> 在数据库高速缓存中不存在这些块。

? >>全表扫描。

? >>磁盘排序。

要想查询速度快,应该尽量避免Physical reads,尽量从缓存读取数据。可通过执行以下SQL

语句来查看Oracle 缓存的命中率:

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$sysstat logical

where physical.name = 'physical reads'

and direct.name='physical reads direct'

and lobs.name='physical reads direct (lob)'

and logical.name='session logical reads';

该项显示buffer cache 大小是否合适,通常在OLTP 系统中,这个值应该大于90%,否则需要考虑增加buffer cache 的大小。

在考虑调整buffer cache hit ratio 时,需要注意:如果上次增加buffer cache 的大小以后,没有对提高hit ratio 产生很大效果的话,不要盲目增加buffer cache 的大小以提高性能。因为对于排序操作或并行读,Oracle 是绕过buffer cache 进行的。在调整buffer cache 时,尽量避免增加很多的内存而只是提高少量hit ratio 的情况出现。

可通过执行以下语句查看Oracle 的buffer cache size:

show parameter _size

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表