sql – 在Oracle中’Buffer Gets’实际引用了什么?

我正在与Oracle DBA打交道,他已经给我发了一些他已经完成的分析。他的报告中的一个术语是“缓冲获取”,任何想法,这实际上意味着什么?我的猜测是从缓冲区中检索的字节,但我真的不知道。这是一些示例输出
Buffer Gets    Executions  Gets per Exec  %Total Time (s)  Time (s) Hash Value
--------------- ------------ -------------- ------ -------- --------- ----------
    137,948,100       31,495        4,380.0   98.4  6980.57   6873.46 4212400674
Module: JDBC Thin Client
SELECT fieldOne,fieldTwo,fieldThree,fieldFour,fieldFive FROM TableExample
WHERE fieldOne = 'example'

知道’获得每个执行’意味着什么也是很方便的,因为我猜它们是相关的?我是程序员,但不是DBA。

解决方法

Oracle存储被安排为给定大小的块(例如8k)。表和索引由磁盘上的一系列块组成。当这些块在内存中时,它们占用缓冲区。

当Oracle需要块时,它会执行缓冲区获取。首先,它检查它是否已经具有内存中所需的块。如果是,则使用内存中版本。如果内存中没有块,则它会将其从磁盘读入内存。

因此缓冲区get表示Oracle必须访问块的次数。可以从内存(缓冲区)或导致物理IO满足读取。

由于物理IO非常昂贵(与内存或cpu相比),因此一种调优方法是集中精力减少缓冲区获取,假设这些缓冲区将逐渐减少物理IO。

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03