本章主要阐述SGA中的Database buffer cache. Buffer cache { 1.pin (读写瞬间的状态) 2.clean 3.dirty 4.unused } --Database buffer cache 概述: 1.段.区.块的概念: create table t2 (     id int,     name varchar2(30) ); 建立一个表,同时建立一个段, 建立段的同时,会给段分配一个区, 区是物理上连续的几个块. 区是oracle给段分配的最小单位.…
Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches   Slab内存管理机制 SLUB内存管理机制 http://wenku.baidu.com/view/dd677d2fcfc789eb172dc868.html http://bbs.chinaunix.net/thread-3759086-1-1.html http://bbs.chinaunix.net/forum.php?mod=viewthread&ti…
Buffer Cache Buffer Cache是SGA区中专门用于存放从数据文件中读取的的数据块拷贝的区域.Oracle进程如果发现需要访问的数据块已经在buffer cache中,就直接读写内存中的相应区域,而无需读取数据文件,从而大大提高性能(内存的读取效率是磁盘读取效率的14000倍).Buffer cache对于所有oracle进程都是共享的,即能被所有oracle进程访问. 一.CBC.Hash Bucket与Hash Chain List     CBC链,用来查找block是否…
Buffer Cache buffer cache 结构图 HASH链 ORACLE使用HASH算法,把buffer cache中每个buffer的buffer header串联起来,组成多条hash chain,一條hash chain由一個hash Bucket管理,hash bucket就是链的链头,从链头引出独立的双向链.一個hash buffer chains latch来保护多个hash chain 1,每个buffer都有buffer header,buffer header指向具…
转自:http://elf8848.iteye.com/blog/1995638 Linux下如何查内存信息,如内存总量.已使用量.可使用量.经常使用Windows操作系统的朋友,已经习惯了如果空闲的内存较多,心里比较踏实.当使用Linux时,可能觉的Linux物理内存很快被用光(如频繁存取文件后),当程序结束后内存没有被释放.空闲内存少的可怜,心里总不踏实.Linux操作系统的内存管理方式与Windows不同,Linxu会尽量多的利用内存,让尽可能多的内存参与工作(做cache)以提高性能.所…
在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存(buffer/cache),利用内存读写的高速特性来提高Linux系统的数据访问性能.在这方面,区别于Windows的内存管理.本文从Linux的内存管理机制入手,简单介绍linux如何使用内存.监控内存,linux与windows内存管理上的区别简介,linux内…
1.基础内容: ALTER SESSION SET EVENTS 'immediate trace name buffers level n'; n取值意义: 1 只转储buffer header. 2 在level 1的基础上再转储数据块头. 3 在level 2的基础上再转储数据块内容. 4 转储buffer header和hash chain. 5 在level 1的基础上再转储数据块头和hash chain. 6 在level 2的基础上再转储数据块内容和hash chain. 8 转储…
原因:资源紧张,等待其释放. 原因的原因:1. lgwr和DBWn进程写太慢:2. Buffer和latch不可用 原因的原因的原因:全表扫描.library cache latches数太多等. 视图:V$SYSTEM_EVENT (instance-level waits), V$SESSION_EVENT (session-level waits) 注意: 等待与共享池和缓冲池中的高命中率(high hit ratios)无关!换句话说,高命中率也会有长时间的等待. * Buffer Bu…
Buffer cache 的调整与优化 -============================== -- Buffer cache 的调整与优化(一) --============================== Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的free buffer waits事件. 下面将具体描述Buffer Cache的作用,调整与优化. 一.SGA的所有组件 从动态…
启动instance:1.分配内存空间SGA 2.启动后台进程 内存结构:1.SGA 2.PGA 3.UGA 4.Software code areas SGA components:1.Database Buffer Cache 2.Redo Log Buffer 3.Shared Pool 4.Large Pool 5.Java Pool 6.Streams Pool 7.Fixed SGA --------------------------------------------------…
Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的free buffer waits事件.下面将具体描述Buffer Cache的作用.调整与优化. 一.SGA的所有组件 从动态视图v$sga_dynamic_components获取SGA的相关信息 SELECT component, current_size, min_size FROM v$sga_dynamic_components; COM…
Linux下如何查内存信息,如内存总量.已使用量.可使用量.经常使用Windows操作系统的朋友,已经习惯了如果空闲的内存较多,心里比较踏实.当使用Linux时,可能觉的Linux物理内存很快被用光(如频繁存取文件后),当程序结束后内存没有被释放.空闲内存少的可怜,心里总不踏实.Linux操作系统的内存管理方式与Windows不同,Linxu会尽量多的利用内存,让尽可能多的内存参与工作(做cache)以提高性能.所以你看到的空闲内存总是很小,当你的程序需要更多内存时,Linxu系统会把做cach…
Buffer Cache 特性 The buffer cache holds copies of the data blocks from the data files. Because the buffer cache is a part of the SGA, these blocks can be shared by all users. The server processes read data from the data files into buffer cache.(是serve…
Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的 free buffer waits事件. 下面将具体描述Buffer Cache的作用,调整与优化. 一.SGA的所有组件 从动态视图v$sga_dynamic_components获取SGA的相关信息 SELECT component, current_size, min_size FROM v$sga_dynamic_components; C…
Buffer cache 和 share pool 是sga中最重要最复杂的部分. 一.Buffer Cache 通常数据的读取.修改都是通过buffer cache 来完成的.buffer cache 中的数据 ,oracle是通过LRU 和dirty list 这样的链表来管理的. 除了这2个,还有 hash bucket 和 cache buffer chain hash bucket:查找方法类似老式图书馆查书 二.Shared Pool 1.shared pool 是oracle sg…
http://blog.csdn.net/wanghai__/article/details/4881492 Buffer Cache LRU与Dirty List 在Buffer Cache中,Oracle通过几个链表进行内存管理. LRU list用于维护内存中的Buffer,按照LRU算法进行管理.数据库初始化时,所有的Buffer都被Hash到LRU list上管理.当需要从数据文件上读取数据时,首先要在LRU List上寻找Free的Buffer,然后读取数据到Buffer Cache…
Buffer cache hit ratio官方是这么解释的:“指示在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分比.” Buffer cache hit ratio被很多人当做判断内存的性能指标之一(我没说仅仅只看这个计数器的值,实际上我现在都不看这个值了), 也有不少给给出了具体的参数,诸如(OLTP)要大于95%,或者是大于98%之类的,我不知道给出具体参考值的人是不是真是地区测试过这个参数的值,是作为经验总结还是复制粘贴? 当我去服务器上观察这个值的时候,似乎发现一个规律, 不管服…
select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v$db_cache_advice    2      where block_size='8192' and advice_status='ON'; 中,size_for_estimate表示预计的数据库高速缓冲区的大小(即:db_cache_size的值).ESTD_PHYSICAL_READS表…
存放从磁盘读取的数据.排序和并行读不会使用buffer cache 可以从v$db_cache_advice或者buffer cache的命中率来检查buffer cache设置是否合理 查看v$db_cache_advice需要开启参数db_cache_advice SQL> show parameter db_cache_advice NAME TYPE VALUE ------------------------------------ ----------- --------------…
buffer cache中,各个object对象占用的buffer blocks: COLUMN OBJECT_NAME FORMAT A40 COLUMN NUMBER_OF_BLOCKS FORMAT 999,999,999,999 SELECT o.OBJECT_NAME, COUNT(*) NUMBER_OF_BLOCKS FROM DBA_OBJECTS o, V$BH bh WHERE o.DATA_OBJECT_ID = bh.OBJD AND o.OWNER != 'SYS' G…
http://www.cnblogs.com/mydomain/archive/2013/02/24/2924707.html Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache.文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成.当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作. 在Linux 2…
buffer cache与相关的latch等待事件 1.buffer cache 2.latch:cache buffers lru chain 3.latch:cache buffers chains 1.buffer cache 我的理解: buffer cache理解成4块结构: 三个列表+1个pool 三个列表指: lru (最近最少使用列表) dirty list (checkpoing qu buffer cache与相关的latch等待事件 1.buffer cache2.latc…
Buffer Cache存放真正数据的缓冲区,shared Pool里面存放的是sql指令(LC中一次编译,多次运行,加快处理性能,cache hit ratio要高),而buffer cache里面存放真正的查询结果.Buffer Cache:由彼此独立的三个子cache(subcaches,也叫主buffer cache:keep,recycle,default)组成支持多种数据块的多缓冲池.注意system表空间只能用主数据块 Step1: 查看各个组件size(看buffer cache…
SQL> select name,value from v$sysstat where name in('db block gets','consistent gets','physical reads'); NAME                                                                  VALUE---------------------------------------------------------------- -----…
主要区别是,buffer cache缓存元信息,page cache缓存文件数据 buffer 与 cache 是作为磁盘文件缓存(磁盘高速缓存disk cache)来使用,主要目的提高文件系统系性能.具体工作过程参见上一篇blog Linux 内核read工作过程.不同点是buffer以块为大小操作,所以称块缓存,cache是以页为大小操作,所以称为页缓存(page cache).什么情况块为单位操作磁盘呢?1.读写inode节点和超级块等操作 2.读写裸块设备.所谓裸块设备就是没有格式化的设…
https://www.thomas-krenn.com/en/wiki/Linux_Page_Cache_Basics References Jump up ↑ The Buffer Cache (Section 15.3) page 348, Linux-Kernel Manual: Guidelines for the Design and Implementation of Kernel 2.6, Robert Love, Addison-Wesley, 2005 Jump up ↑ L…
在将数据块读入到SGA中,他们的缓冲区被放置在悬挂散列存储桶的链表中(散列链),这种内存结构由大量 子cache buffers chains锁存器(也称为散列锁存器或CBC锁存器)保护. Buffer Cache概述 Buffer Cache是SGA的一部分,Oracle利用Buffer Cache来管理data block,Buffer Cache的最终目的就是尽可能的减少磁盘I/O.Buffer Cache中主要有3大结构用来管理Buffer Cache. Hash Bucket与Hash…
Buffer  Cache可以有三个池 默认缓冲区池 keep缓冲区池 recycling缓冲区池 --保留池和回收池可以独立于sga中的其他缓存分配内存.创建表的时候可以在storage子句中使用buffer_pool_keep和buffer_pool_recyle子句来指定表的数据块将要驻留的池 . keep缓冲区池 当数据读取到kepp缓冲区池后,会一直保留在内存中,不会被刷出内存,比如整天使用频繁的表,有利的做法是讲其放在keep缓冲池中,以减少IO数量. keep池的大小由db_kee…
因为要优化I/O性能,所以要理解一下这两个概念,这两个cache着实让我迷糊了好久,通过查资料大概明白了两者的区别,试着说下. page cache:文件系统层级的缓存,从磁盘里读取的内容是存储到这里,这样程序读取磁盘内容就会非常快,比如使用grep和find等命令查找内容和文件时,第一次会慢很多,再次执行就快好多倍,几乎是瞬间.如果page cache的数据被修改过后,也即脏数据,等到写入磁盘时机到来时,会转移到buffer cache 而不是直接写入到磁盘. buffer cache:磁盘等…
缓冲区缓存(Buffer Cache) Buffer Cache是SGA的一部分,保存最近从磁盘读取的或修改的(dml修改或添加)数据块.Buffer Cache的目的就是减少磁盘I/O,提高速度. Oracle允许表空间最多使用5种不同的块大小,由db_cache_size和db_nk_cache_size决定.如果一天或一周中事务处理发生了变化,就可以动态的改变db_cache_size和db_nk_cache_size 的值而不必重启实例,以便提高表空间性能. db_cache_size参…