Oracle的数据缓冲区是如何工作的

本文探讨Oracle数据缓冲区的内部机制——Oracle用这一内存来防止不必要的数据块从磁盘重读。理解Oracle数据缓冲区如何操作,是成功地运用它们调整数据库性能的关键。

在Oracle 8i以前的版本里,当数据块被从磁盘送进数据缓冲区的时候,数据块会被自动地放置到最近使用过的数据列表的前部。但是,这种行为从Oracle 8i开始就变了:新数据缓冲区被放置在缓冲区链的中部。在调节数据库的时候,你的目标就是为数据缓冲区分配尽量多的内存,而不会导致数据库服务器在内存里分页。数据缓冲区每小时的命中率一旦低于90%,你就应该为数据块缓冲区增加缓冲区。

数据块的存活时间

在调入数据块之后,Oracle会不停地跟踪数据块的使用计数(touch count,也就是说,这个数据块被用户线程所访问的次数)。如果一个数据块被多次使用,它就被移动到最近使用过的数据列表的最前面,这样就能确保它会在内存里保存一段较长的时间。这种新的中点插入技术会确保最常使用的数据块被保留在最近使用过的数据列表的最前面,因为新的数据块只有在它们被重复使用的时候才会被移动到缓冲区链的最前面。

总而言之,Oracle 8i数据缓冲池的管理要比先前的版本更加有效。通过将新的数据块插入缓冲区的中部,并根据访问活动(频率)调整缓冲区链,每个数据缓冲区就被分割成两个部分:热区(hot section),代表数据缓冲区的最近使用的一半;冷区(cold section),代表数据缓冲区的最早使用的一半。只有那些被反复请求的数据块才会被移进每个缓冲池的热区,这就让每个数据缓冲区在缓冲常用数据块的时候效率更高。

热区的大小要用下面的隐藏参数来配置:

_db_percent_hot_default
_db_percent_hot_keep
_db_percent_hot_recycle

Oracle公司作为官方没有推荐更改这些隐藏参数。只有懂得内部机制和希望调节其数据缓冲区行为的有经验人员才应该使用这些参数。

找到热数据块

Oracle 8i保留着一个X$BH内部查看表,用来显示数据缓冲池的相对性能。X$BH查看表有下列数据列:

Tim:两次使用之间的时间差,和_db_aging_touch_time参数相关。

Tch:使用计数,它和被使用过_db_aging_hot_criteria次之后从冷区移入热区直接相关。

由于Tch数据列用来追踪特定数据块的使用次数,所以你就能够编写一个字典查询来显示缓冲区里的热数据块——使用计数大于10的数据块,就像下面这样:

SELECT
   obj      object,
   dbarfil  file#,
   dbablk   block#,
   tch      touches
FROM
   x$bh
WHERE
   tch > 10
ORDER BY
   tch desc;

这项高级查询技术在用于追踪DEFAULT缓冲池里的对象时尤其有用。一旦定位了热数据块,你就能够把它们从DEFAULT缓冲池移动到KEEP缓冲池。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索oracle
, 内存
, 数据
, 参数
, 缓冲
, 缓冲区
缓冲池
oracle数据库缓冲区、oracle数据缓冲区、oracle字符缓冲区太小、oracle缓冲区、oracle 缓冲区命中率,以便于您获取更多的相关知识。

时间: 2024-11-08 21:09:42

Oracle的数据缓冲区是如何工作的的相关文章

大数据与机器学习:实践方法与行业案例.2.2 数据缓冲区

2.2 数据缓冲区 数据缓冲区是处于生产环境和分析环境之间的中间区域,它是数据闭环中各个系统间的数据中转站,从各个系统接收原始数据,并将其暂存在对应的目录中.其他系统可以从数据缓冲区中获取需要的数据文件. 为了便于管理和迁移数据,我们规定存入数据缓冲区中的数据使用文本文件的格式,这样一来,数据缓冲区就可以使用一台或几台文件服务器实现.几乎所有的应用系统都支持文本文件的数据交互,新的系统可以轻松加入数据闭环之中. 数据缓冲区的一端连接生产环境中的大量应用系统,另一端连接分析环境中的数据平台,避免了

ORACLE--SGA之数据缓冲区(Data Buffer)

暨上通过预编译阐述道共享池最后到SGA,这里进一步说明一下SGA中另一个大块,数据缓冲区,携带提及一点数据文件和表空间,后续专门会说明这块.   首先了解下SGA种大致有那些东西,这些东西随着数据库版本的增加会有所增加,不过大致上应该一致,这也是基本所有的体系结构都会描述的东西:   在认识数据缓冲区前,先记住几个常用的视图: X$BH.GV$BH.V$BH.V$FIXED_TABLE.V$FIXED_VIEW_DEFINITION.DICT.DICT_COLUMNS.   以及两个包:DBMS

Oracle数据库数据对象分析(上)

oracle|对象|数据|数据库 Oracle数据库数据对象中最基本的是表和视图,其他还有约束.序列.函数.存储过程.包.触发器等.对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径. 表和视图 Oracle中表是数据存储的基本结构.ORACLE8引入了分区表和对象表,ORACLE8i引入了临时表,使表的功能更强大.视图是一个或多个表中数据的逻辑表达式.本文我们将讨论怎样创建和管理简单的表和视图. 管理表 表可以看作有行和列的电子数据表,表是关

甲骨文宣布推出最新版本Oracle大数据机和大数据连接器

北京,2012年12月28日--甲骨文公司日前宣布推出最新版本Oracle 大数据机(Oracle Big Data Appliance)和 Oracle大数据连接器(Oracle Big Data Connectors),旨在帮助企业赢得大数据发展机会以实现其业务转型. Oracle大数据机X3-2是一个颇具成本效益的软硬件集成系统,并且已经进行了全新升级.它整合了Intel全新处理器和最新发布的Cloudera分区,包括Apache Hadoop(CDH)和Cloudera管理器,以及用于大

甲骨文公司宣布正式推出Oracle大数据机

甲骨文公司日前宣布正式推出Oracle大数据机(Oracle Big Data Appliance),将帮助客户最大程度发挥大数据的商业价值. Oracle大数据机是一个硬.软件集成系统,融合了Cloudera公司的Distribution Including Apache Hadoop和Cloudera Manager,以及一个开源R. 该系统采用Oracle Linux操作系统,配备有Oracle NoSQL数据库社区版本和Oracle HotSpot Java虚拟机. 同时,甲骨文公司还宣

利用Oracle RDA( Remote Diagnostic Agent)快速收集Oracle产品分析数据

利用Oracle RDA( Remote Diagnostic Agent)快速收集Oracle产品分析数据  原文地址:利用Oracle RDA快速收集Oracle产品分析数据 作者:尛样儿         Remote Diagnostic Agent (RDA) 是一个工程师用Perl语言编写的命令行诊断工具,RDA提供统一的诊断工具支持包和预防的解决方法.提供给Oracle支持收集的客户环境全面的数据信息能够帮助问题的诊断.         Oracle支持鼓励使用RDA,因为它能对于更

在ASP.NET+ORACLE添加数据记录并让ID自动增量

在ASP.NET+ORACLE添加数据记录并让ID自动增量需要在ORACLE中设序列和触发器即可,切记不是索引,ASP.NET中不管ID,具体如下: 1.建立序列: CREATE SEQUENCE seq_emergency_id NOCYCLE MAXVALUE 9999999999 START WITH 2;   2.建立触发器:  CREATE OR REPLACE TRIGGER set_emergency_id BEFORE INSERT ON "EMERGENCY"FOR

DataWindow的数据缓冲区

window|数据 DataWindow的数据缓冲区张健姿 01-6-22 下午 03:14:44 DATAWINDOW的四个缓站区 在PowerBuilder中,DataWindow是用户前端用来存储.操纵数据的对象.在每一个DataWindow对象中有4个二维表作为数据缓冲区,用来存储查询到的数据.用户在DataWindow中对数据处理系统内部的操作实际上都是将数据在这几个缓冲区中进行的修改和移动,最后在用户提交数据库时,系统根据这四个缓冲区中的信息形成SQL的IN-SERT,UPDATE,

使用 Sql*Loader 向 Oracle 导入数据

oracle|导入数据 使用Oracle的sqlldr工具来将SDSS.CSV文件中的数据导入数据库. SDSS.CSV 放置于 E:\ 内容如下:         2.3757291096910399E-4,-8.9490277843631194,20.302597,        0.00023851549291556,-0.88450365314434698,20.098101,        2.5168890447969299E-4,7.7169029946908094E-2,18.7