缓冲区缓存(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参数指定默认的buffer pool的大小,而默认池的块大小是由db_block_size参数指定的,这个块大小是最初创建数据库时使用的块大小,也即system和所有temporary表空间的块大小

db block size在建库后并不能修改,但有时候,会把db block  size调大或调小。可以通过db_nk_cache_size实现这些需求。

db_nk_cache_size参数是自oracle9i之后才引入的,增加这些缓存是为了支持数据库中不同的块大小。最多可以有4种非默认的块大小。可以使用如下命令来设置

alter system set db_16k_cache_size=1024M;

意思就是设置块大小为16k,大小为1024M的缓冲区

不同块大小缓存之间是互斥的,无法共享。使用这些非标准块大小可以让默认8k的系统中的数据传输到默认16k的系统中。

示例:

Step1 创建一个块大小16k,大小为52M的缓存区

SQL>   alter system set db_16k_cache_size=52M;

System altered.

SQL> show parameter cache_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
client_result_cache_size             big integer 0
db_16k_cache_size                    big integer 52M
db_2k_cache_size                     big integer 0
db_32k_cache_size                    big integer 0
db_4k_cache_size                     big integer 0
db_8k_cache_size                     big integer 0
db_cache_size                        big integer 0
db_flash_cache_size                  big integer 0
db_keep_cache_size                   big integer 0
db_recycle_cache_size                big integer 0

Setp2 创建表空间使用块大小16k 

SQL> create tablespace test_block_16k datafile '+data' size 32M blocksize 16k;

Tablespace created.

select tablespace_name,FILE_NAME,USER_BYTES/USER_BLOCKS/1024 as "per_block_size(K)"
from dba_data_files 
where TABLESPACE_NAME='TEST_BLOCK_16K';

SQL> select tablespace_name,FILE_NAME,USER_BYTES/USER_BLOCKS/1024 as "per_block_size(K)"
  2  from dba_data_files 
  3  where TABLESPACE_NAME='TEST_BLOCK_16K';

TABLESPACE_NAME                FILE_NAME                                          per_block_size(K)
------------------------------ -------------------------------------------------- -----------------
TEST_BLOCK_16K                 +DATA/c1/datafile/test_block_16k.279.825886891                   ‍16

Setp3 创建表使用块大小为16k的表空间

SQL> create table test_16k (id int,name varchar2(32)) tablespace test_block_16k;

Table created.

SQL> select distinct(segment_name),BYTES/BLOCKS/1024 as "per_block_size(K)"
  2  from dba_extents
  3  where segment_name='TEST_16K';

SEGMENT_NAME                   per_block_size(K)
------------------------------ -----------------
TEST_16K                                      16

SQL> insert into test_16k values(1,'xyc');

1 row created.

SQL> commit;

Commit complete.

Setp4  把db_nk_cache_size设置为0,看是否能在使用这些表空间

SQL> alter system set db_16k_cache_size=0;

System altered.

SQL> insert into test_16k values(2,'xyc');
insert into test_16k values(2,'xyc')

*
ERROR at line 1:
ORA-00379: no free buffers available in buffer pool DEFAULT for block size 16K

--可以看到alter system set db_16k_cache_size=0后表空间无法再使用,alter system set db_16k_cache_size=0实际起了关闭16k区的作用

Buffer Cache(缓冲区缓存)篇:缓存区块大小的更多相关文章

  1. SpringBoot缓存篇Ⅰ--- 缓存抽象

    缓存是每一个系统应该考虑的功能,它可以用来加速系统的访问,提升系统性能,例如要经常访问的高频热点数据,例如某一个商品网站的商品信息,商品信息存储在数据库中,若每次访问都要查询数据库的话,这样的操作耗时 ...

  2. jQuery2.x源码解析(缓存篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 缓存是jQuery中的又一核心设计,jQuery ...

  3. Memory Architecture-SGA-Database Buffer Cache

    启动instance:1.分配内存空间SGA 2.启动后台进程 内存结构:1.SGA 2.PGA 3.UGA 4.Software code areas SGA components:1.Databa ...

  4. Buffer Cache(缓冲区缓存)篇:keep缓冲区池(保留池)

    Buffer  Cache可以有三个池 默认缓冲区池 keep缓冲区池 recycling缓冲区池 --保留池和回收池可以独立于sga中的其他缓存分配内存.创建表的时候可以在storage子句中使用b ...

  5. linux下的缓存机制及清理buffer/cache/swap的方法梳理 (转)

    一.缓存机制介绍 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果 ...

  6. linux下的缓存机制及清理buffer/cache/swap的方法梳理

    (1)缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接 ...

  7. 缓存篇(Cache)~大话开篇

    回到占占推荐博客索引 闲话杂淡 想写这篇文章很久了,但总是感觉内功还不太够,总觉得,要写这种编程领域里的心法(内功)的文章,需要有足够的实践,需要对具体领域非常了解,才能写出来.如今,感觉自己有写这种 ...

  8. Spring Boot 揭秘与实战(二) 数据缓存篇 - Redis Cache

    文章目录 1. Redis Cache 集成 2. 源代码 本文,讲解 Spring Boot 如何集成 Redis Cache,实现缓存. 在阅读「Spring Boot 揭秘与实战(二) 数据缓存 ...

  9. Spring Boot 揭秘与实战(二) 数据缓存篇 - Guava Cache

    文章目录 1. Guava Cache 集成 2. 个性化配置 3. 源代码 本文,讲解 Spring Boot 如何集成 Guava Cache,实现缓存. 在阅读「Spring Boot 揭秘与实 ...

随机推荐

  1. collectionView 中cell间距设置建议

    应该是调节UICollectionViewFlowLayout的minimumInteritemSpacing属性,这个是调节同一行的cell之间的距离的. 使用-(CGFloat )collecti ...

  2. apache+mysql+php环境的手动搭建

    一.搭建Apache Http Server 官方下载地址:http://www.apachehaus.com/cgi-bin/download.plx 搭建环境:win10 64位 WIN10 64 ...

  3. JS兼容性问题列表

    记录平时遇见的兼容性问题,有更好的解决办法希望各位提出,会随着开发遇到问题而更新,标记为黄色的为未解决和猜测答案 提出时间 问题描述 解决方案 2014/10/22 submit按钮阻止了默认事件不能 ...

  4. 在python文本编辑器里如何设置Tab为4个空格

    python中缩进一般为四个空格,我总结3种常用编辑器中种如何设置Tab键为四个空格 第一种:下载python3.5时自带de 一个IDLE编辑器 在Options选项下的Configure IDLE ...

  5. python 之日期时间处理

    ##python时间操作一般使用time.datetime两个模块 对于time模块,时间的表示模式有3种1.时间戳:time.time()2.字符串: time.strftime('%Y%m%d') ...

  6. JS 节流阀

    JS 节流阀 参考 https://github.com/hahnzhu/read-code-per-day/issues/5 节流阀 节流阀的基本原理 事件函数的执行都记下当前时间, 只有当前时间与 ...

  7. WebWorker SharedWorker ServiceWorker

    WebWorker 是什么? 为 JavaScript 引入线程技术 不必再用 setTimeout().setInterval().XMLHttpRequest 来模拟并行 Worker 利用类似线 ...

  8. C#对象赋值出现的诡异问题,或许你也遇到过,有待你的解决

    前言:今天在代码中,又出现了这个问题,就是对象赋值给一个新的对象时,然后更改新对象中的属性,就会把老对象的值也更改,以前也遇到这个问题,只是没有深究,今天刚好又遇到了此问题,我决定写下来,和大家一起分 ...

  9. JAVA泛型-擦除

    package com.xt.thinks15_7; import java.util.Arrays; class EraseObject1<A> { } class EraseObjec ...

  10. Hadoop基准测试(转载)

    <hadoop the definitive way>(third version)中的Benchmarking a Hadoop Cluster Test Cases的class在新的版 ...