`
ordinary
  • 浏览: 77565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle 学习1(buffer cache )

阅读更多

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } -->

buffer cache 概述

       buffer cache oracle 建立的数据文件缓存。oracle中的所以select DMLDDL等命令,凡是对数据文件的读写,基本上都要操作buffer cachebuffer cache的大小主要是通过db_cache_size设置。

buffer cache所能提供的功能主要包括:

   1) 通过缓存数据块,从而减少I/O

   2) 通过构造CR块,从而提供读一致性功能。

   3) 通过提供各种locklatch机制,从而提供多个进程并发访问同一个数据块的功能。

buffer cache 工作原理

1buffer cache 的内存组织形式

     oracle文件组织是以块为单位,因此buffer cache对应的buffer和内存中的块大小相同,只是内存中叫块,在buffer cache中叫buffer

2HASH

假设buffer cache的大小为800M,块的大小为8k,这样buffer cache就能存储 800*1024/8=102400个文件。buffer cahe的目的是提供逻辑读,当用户执行查询的时候,首先会在buffer cache中进行查找,当找不到时,先会进行物理读,把读取的结果放入buffer cache,接着从buffer cache返回结果给用户。为了实现高效的查询,oracle采用了hash算法来查找对象。oracle以每个块的文件号,块号和类型来做hash,根据hash可以得到对象的内存地址。

 

3LRU

        如上所述,假设buffer cache的大小为800M,块的大小为8k,这样buffer cache就能存储 800*1024/8=102400个文件,当系统比较繁忙时,buffer cache中存储了十万多个文件,当用户查找时,在buffer cache中没查找到数据,通过物理查找,查询到数据A,这时,需要在buffer cache中创建一个块,这样的块叫free 块,但buffer cache中没有free 块时,oracle是怎样剔除buffer cache 中的块呢?Oracle选择了LRU算法,最近最少使用算法,就是优先试用最近最少试用的块。oracle中另外建立了一套LRU链表,依照buffer被访问的频率排序,如果oracle需要free buffer,就从LRU找。LRU链的算法是oracle改进的LRU算法。链表分为两端,分别为热端和冷端。每个块根据访问频率在链上排序

4LRUW

       在oracle中,buffer cache不但缓存了进程读过的块,当用户对块修改时,先在buffer cache中修改,等待时机写入硬盘。Buffer cache中被修改的块叫脏块。当脏块谢入硬盘时,这是块就不脏了。假如LRU链上有3000个块,脏块数目为2000个。这样每次查找自由块时,会浪费大量的查找时间。为了解决这个问题,oracle创建了LRUW,在脏块数达到一定数目时,把LRU链上的脏块移到LRUW块什么时候被移进LRUW链?当块变脏时,块并不立即移到LRUW中,块还会继续呆在LRU中,当下次服务器进程搜索自由块是,会将发现的所以脏块一起移到LRUW为什么不在块一变脏时,立即将块移到LRUW?如果要这样做,适必增加修改块时,需要完成的工作,而且在链表间转移块,也必需要先获得保护链表额锁。这样以来,适必造成锁竞争。不如修改块后,暂时不对所处的链修改,等到以后搜索自由块是,把发现的脏块一起进行移动。

 


分享到:
评论

相关推荐

    oracle性能调优之buffer cache

    oracle性能调优之buffer cache

    oracle_buffer_cache深入分析

    本文首先详细介绍了oracle中buffer cache的概念以及所包含的内存结构。然后结合各个后台进程(包括DBWRn、CKPT、LGWR等)深入介绍了oracle对于buffer cache的管理机制,并详细解释了oracle为什么会采用现在的管理...

    Oracle Buffer和Cache的区别

    Oracle Buffer和Cache的区别 buffer与cache操作的对象就不一样。 buffer(缓冲)是为了提高内存和硬盘(或其他I/0设备)之间的数据交换的速度而设计的。 cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计...

    Oracle 中 Buffer Cache 的研究.pdf

    Oracle 中 Buffer Cache 的研究.pdf

    深入Buffer Cache 原理

    深入Buffer Cache 原理

    深入学习Buffer cache

    深入学习Buffer cache,oracle 10g 内存结构

    Oracle buffer cache

    buffer cache 深度解析,buffer cache 深度解析,

    Performance Analysis of the Linux Buffer Cache While Running an Oracle OLTP Workload

    Performance Analysis of the Linux Buffer Cache While Running an Oracle OLTP Workload

    oracle9i oracle11g oracle10g 性能调优 基础学习 视频地址

    1z0-033-04 BUFfer cache 12 1z0-033-05 12 1z0-033-02 诊断与调优工具 12 1z0-033-03-changed all 检查点工作机制 12 1z0-033-11(A)(好) SQL优化 SQL优化器的使用 查询计划 计划稳定性的概要 TRACE TKTOP使用 ...

    oracle RMAN 备份恢复总结

    oracle RMAN 备份恢复总结 oracle RMAN 备份恢复总结 oracle RMAN 备份恢复总结

    2010年10月最新ORACLE OCP培训教程

    Server Process and Database Buffer Cache 1-14 Physical Database Structure 1-15 Tablespaces and Data Files 1-17 SYSTEM and SYSAUX Tablespaces 1-18 Segments, Extents, and Blocks 1-19 Logical and ...

    Oracle11g体系结构深入剖析和运维管理(三)

    资源名称:Oracle 11g体系结构深入剖析和运维管理(三)资源目录:【】19_buffer状态深入剖析【】20_使用各种SQL来熟知buffercache使用情况【】21_Oracle日志原理剖析【】22_Oracle日志核心意义_快速提交_写缓存【】23...

    Oracle面试题 oracle学习题

    截取部分题目如下,有答案: 1. 解释冷备份和热备份的不同点以及各自的优点 2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?...18. 如何增加buffer cache的命中率? 19. ORA-01555的应对方法?

    深入浅出oracle DBA入门 中文版

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、buffer cache与shared pool原理、重做、回滚与撤销、等待事件、性能诊断与sql优化等几大oracle热点主题,本书从基础知识入手...

    Oracle四大宝典之四:Oracle 调优入门到精通

    第5章 Buffer cache故障排除与调优 第6章 Redo Buffer与Java池 第7章 SGA管理 第8章 PGA与排序 第9章 SQL调优 第10章 资料收集 第11章 存储空间管理 第12章 聚簇 第13章 索引组织表 第14章 重要的ORACLE特性 第15章 ...

    Oracle数据库应用试验指导书.pdf

    数据库高速缓冲区(Database Buffer Cache) 共享存储区(Shared Pool) 重做日志存储缓冲区(Redo Log Buffer) JAVA存储区(Java Pool) 大型存储区(Large Pool) SGA总容量=共享池+缓冲区高速缓存+大型存储区...

    cache buffers chain形成原因分析

    Oracle定义了一些cache buffer chains latches来保护这种内存结构的数据一致性读取.如下表所示. 一个进程在对数据块执行add, remove, search, inspect, read 或者modify之前需要首先获得cache buffers chains latch...

    oracle学习经典教程

    TIANLESOFTWARE ORACLE 学习手册.......1 一. ORACLE 基础知识..24 1.1 ORACLE OLAP 与OLTP 介绍..................24 1.1.1 什么是OLTP ....25 1.1.2 什么是OLAP....26 1.1.3 在OLAP 系统中,常使用...

    oracle 10g ocp 043解析(185题).

    the database buffer cache is not large enough to cache all the needed data blocks. Which advisory component wold you refer to, in order to determine that required size of the database buffer cache? ...

Global site tag (gtag.js) - Google Analytics