10 OCP知识点讲解 之 什么是Buffer Cache?
分类: Oracle
2012-06-22 17:36:54
一、Buffer cache作用:
Buffer cache是Oracle建立的数据文件的缓冲区。Oracle中所有Select、DML、DDL等命令,凡是需要所有对数据文件进行读、写操作的,基本上都是对Buffer cache进行读、写操作。如果需要读或写的块没有包括在Buffer cache,Oracle会先把它读进Buffer cache中,再进行读、写。
通常,如果要读的块已经在Buffer cache中了,Oracle将不必再访问磁盘数据文件,这个读操作被称为逻辑读。也就是没有真正读写磁盘的意思。
如果要读的块不在Buffer cache,那么Oracle必须到磁盘上将其调入Buffer cache中,这个操作被称为物理读。再将块物理读进Buffer cache后,Oracle再从Buffer cache中逻辑读取需要的数据。
二、Buffer cache大小的设置:
在Oracle 10g中,非常简单,我们不必设置Buffer cache的大小,只需设置一个sga_target参数,SGA目标值,10g将会根据你的数据库的情况,自动调整共享池、Buffer cache池等等所有SGA中内存组件的大小。db_cache_size参数是设置Buffer cache大小的,和共享池一样,在Oracle 10g中,它也只是个下限值。
Buffer cache是磁盘数据文件的缓存,数据文件的基本读写单位是Oracle数据块,最常的块大小是4KB、8KB、16KB等等,在我们的实例库,数据库块大小是8KB。也就是说Oracle一次读写将从数据文件中读写8KB字节。Buffer cache既然是数据文件的直接缓存,Buffer cache的内存块大小当然也是8KB了。
Oracle从9i之后开始支持多重块大小,你在创建数据库时设置的块大小被称为标准块大小,除了标准块大小外,我们还可以使用多个非标准的块大小。就像我们的实例库,标准块大小是8KB,我们还可以使用2KB、4KB、16KB和32KB的非标准块大小。
那么,数据库有必要使用多种块大小吗?绝对有必要。对于全表扫描操作,越大的块效率越高。因为全表扫描要访问表所有的行,所有块。块越大,相同大小的表所占用的块就越少。而每读一个块,Oracle都算作一次物理读,表块越少,访问全表所需的物理读就越少。因此,全表扫描操作适合大块。但对于索引扫描,索引扫描是一种随机的形式访问表中的行。随机访问下小块效率更好。因为你每访问一个块,Oracle都要将块读进Buffer cahce,这样做的目的是希望你再次访问块中其他行时,不必再从磁盘读取(从磁盘中读是物理读),而直接从内存中读取(从内存中读是逻辑读)。随机访问很可能访问完块中一行后,就不再访问此块了。因此是随机本身就是无规律的访问。因为小块占用的内存少,随机访问下,将小块读入内存比将大块读入内存,能更节省内存空间,提高内存的使用效率。因此,随机访问下,小块的效率比大块要好一些。还有,大块的争用可能性更高,而小块争用的可能性低。因为大块中行比较多,而小块中行少。这就好像一个团队有100个人,另一个团队有10个人,当然人越多越容易发生矛盾。总之,大块有大块的好低,小块有小块的好处,如果数据库只能使用一种块大小,这显然是不太合理的。
我们在Oracle体系结构部分就了解了如何配置使用非标准块大小,其要点有如下两点:
·只有配置了相应非标准块大小的Buffer cache池后,才能使用非标准块大小
·非标准块大小是在表空间层指定的。一旦在表空间层确定了表空间所使用的块大小,以后被创建在此表空间中的所有表、索引等等段对象,都将按表空间块大小为准。
有一定需要补充的是,用来配置非标准块大小Buffer cache的初始化参数db_16k_cache_size、db_2k_cache_size、db_32k_cache_size、db_4k_cache_size、db_8k_cache_size,它们并不在Oracle自动内存管理的范筹内,Oracle并不会自动的调整他们的大小。你将这些参数设置为多大,只要SGA内还有空闲内存,Oracle将会立即分配相应大小的内存空间。
10 OCP知识点讲解 之 什么是Buffer Cache?的更多相关文章
- 09 OCP知识点讲解 之 LRU链与脏LRU链
OCP知识点讲解 之 LRU链与脏LRU链 分类: Oracle 2012-06-30 10:49:26 一.LRU链: 任何缓存的大小都是有限制的,并且总不如被缓存的数据多.就像Buffer c ...
- OCP知识点讲解 之 检查点队列与增量检查点
原创 http://blog.chinaunix.net/uid-26762723-id-3271558.html 检查点的主要目的是以对数据库的日常操作影响最小的方式刷新脏块.脏块不断的产生,如何将 ...
- OCP知识点讲解 之 队列、资源与锁:RHCA|OCM|CCIE RedHat大中华地区前50位RHCA系统架构师:叶绍琛
一.队列与共享资源 共享资源可以被多个会话.进程同时访问,因此它的访问需要保护.Oracle中,除了PGA,所有的东西(包括内存.磁盘.CPU.表.索引.事务等等,种类太多,一概用东西两字来代表) ...
- javascript数组的知识点讲解
javascript数组的知识点讲解 阅读目录 数组的基本方法如下 concat() join() pop() push() reverse() shift() sort() splice() toS ...
- 小程序基础知识点讲解-WXML + WXSS + JS,生命周期
小程序基础 小程序官方地址,小程序开发者工具,点击此处下载.在微信小程序中有一个配置文件project.config.json,此文件可以让开发者在不同设备中进行开发. 微信小程序共支持5种文件,wx ...
- Android开发工程师文集-Android知识点讲解
前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...
- 相克军_Oracle体系_随堂笔记005-Database buffer cache
本章主要阐述SGA中的Database buffer cache. Buffer cache { 1.pin (读写瞬间的状态) 2.clean 3.dirty 4.unused } --Databa ...
- Buffer Cache
Buffer Cache Buffer Cache是SGA区中专门用于存放从数据文件中读取的的数据块拷贝的区域.Oracle进程如果发现需要访问的数据块已经在buffer cache中,就直接读写内存 ...
- Oracle优化 -- 关于Database Buffer Cache相关参数DB_CACHE_SIZE的优化设置
select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v ...
随机推荐
- Django 模型层之多表操作
一.创建模型 实例: 作者表: 拥有字段:姓名(name),性别(sex),该表与书籍表之间为多对多的关系 作者详情表: 拥有字段:地址(addr),手机号(phone),该表与作者表之间为一对一的关 ...
- HDD 机械硬盘 安装 linux(centos7)
1. 下载 UltraISO 文件-->打开, 选中centos.iso镜像; 启动-->写入硬盘映像-->硬盘驱动器(选中u盘)写入方式(USB-HDD+v2)-->写入 ...
- 纯js轮播图
<div id="wrapper"> <div id="container"> <img src="http://ima ...
- 项目经验:GIS<MapWinGIS>建模第四天
实现了查询,与定位功能
- SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Row-Level Security(行级别安全控制)
SQL Server 2016 CPT3中包含了一个新特性叫Row Level Security(RLS),允许数据库管理员根据业务需要依据客户端执行脚本的一些特性控制客户端能够访问的数据行,比如,我 ...
- zend studio 破解、汉化和字体颜色及快捷键相关设置
下载:http://www.geekso.com/component/zendstudio-downloads/ 破解:http://www.geekso.com/ZendStudio9-key/ 注 ...
- 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Start(),然后才能执行添加到 SqlDependency 实例中的命令
如标题错误,解决办法及出现错误情况,见图片 出现如图错误
- java访问windows远端共享文件的方法
没密码的,直接用url访问就可以了,跟本地文件相同. 有密码的,用smb. 远端需要开启smb. win10启动smb的方法:https://jingyan.baidu.com/article/47a ...
- 【pbrt】在c++程序中使用pbrt进行渲染
近段时间做一个关于水面的动画.由于我用c++实现水面动画的,然而使用c++我自己的渲染系统渲染结果被同学说是可视化不叫渲染,所以我决定修改一下…… 恰好进来在学习pbrt,所以索性就蛋疼了考虑直接用p ...
- 记一次挖掘115网盘反射型xss,08xss的储存型xss
记一次对115分站简单绕过过滤继续实现xss,08xss平台也中枪!! 115反射型xss url:http://115.qiye.115.com/disk/?ac=select_public_fil ...