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参数指定默认的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(缓冲区缓存)篇:缓存区块大小的更多相关文章
- SpringBoot缓存篇Ⅰ--- 缓存抽象
缓存是每一个系统应该考虑的功能,它可以用来加速系统的访问,提升系统性能,例如要经常访问的高频热点数据,例如某一个商品网站的商品信息,商品信息存储在数据库中,若每次访问都要查询数据库的话,这样的操作耗时 ...
- jQuery2.x源码解析(缓存篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 缓存是jQuery中的又一核心设计,jQuery ...
- Memory Architecture-SGA-Database Buffer Cache
启动instance:1.分配内存空间SGA 2.启动后台进程 内存结构:1.SGA 2.PGA 3.UGA 4.Software code areas SGA components:1.Databa ...
- Buffer Cache(缓冲区缓存)篇:keep缓冲区池(保留池)
Buffer Cache可以有三个池 默认缓冲区池 keep缓冲区池 recycling缓冲区池 --保留池和回收池可以独立于sga中的其他缓存分配内存.创建表的时候可以在storage子句中使用b ...
- linux下的缓存机制及清理buffer/cache/swap的方法梳理 (转)
一.缓存机制介绍 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果 ...
- linux下的缓存机制及清理buffer/cache/swap的方法梳理
(1)缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接 ...
- 缓存篇(Cache)~大话开篇
回到占占推荐博客索引 闲话杂淡 想写这篇文章很久了,但总是感觉内功还不太够,总觉得,要写这种编程领域里的心法(内功)的文章,需要有足够的实践,需要对具体领域非常了解,才能写出来.如今,感觉自己有写这种 ...
- Spring Boot 揭秘与实战(二) 数据缓存篇 - Redis Cache
文章目录 1. Redis Cache 集成 2. 源代码 本文,讲解 Spring Boot 如何集成 Redis Cache,实现缓存. 在阅读「Spring Boot 揭秘与实战(二) 数据缓存 ...
- Spring Boot 揭秘与实战(二) 数据缓存篇 - Guava Cache
文章目录 1. Guava Cache 集成 2. 个性化配置 3. 源代码 本文,讲解 Spring Boot 如何集成 Guava Cache,实现缓存. 在阅读「Spring Boot 揭秘与实 ...
随机推荐
- 数据持久化------Archiving(归档,解档)
其中TRPerson为自定义的继承自NSObject的类的子类 其中有两个属性,name 和 age .h文件 #import @interface TRPerson : NSObject<& ...
- hadoop之hdfs学习
简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Go ...
- Ajax 调用方式
function wds_generatecss() { var txt = $.trim($("#TxtText").val()); if (txt == "" ...
- poj 3228 Gold Transportation 二分+网络流
题目链接 给出n个城市, 每个城市有一个仓库, 仓库有容量限制, 同时每个城市也有一些货物, 货物必须放到仓库中. 城市之间有路相连, 每条路有长度. 因为有些城市的货物量大于仓库的容量, 所以要运到 ...
- codeforces 589F. Gourmet and Banquet 二分+网络流
题目链接 给你n种菜, 每一种可以开始吃的时间不一样, 结束的时间也不一样. 求每种菜吃的时间都相同的最大的时间.时间的范围是0-10000. 看到这个题明显可以想到网络流, 但是时间的范围明显不允许 ...
- zoj 2589 Matrix Searching 二维线段树
题目链接 给一个n*n的矩阵, 给q个查询, 每次给出x1, y1, x2, y2, 求这个矩阵中的最小值. 代码基本上和上一题相同... #include<bits/stdc++.h> ...
- Spring集成Quartz定时器
<!-- Spring集成Quartz开始 --> <bean id="startQuertz" lazy-init="false" auto ...
- 阿里云ECS每天一件事D7:安装tomcat8.0
这一D,跨越了几个月啊,人是越来越懒,集中写一些,就懒得再记录了.也是因为测试需要,搭建个jsp的服务环境,只是测试,考虑用tomcat就够了. 在Tomcat官网下载最新Core版本,下载之后,将文 ...
- Windows 系统消息范围和前缀,以及消息大全
Windows系统定义的消息类别消息标识符前缀 消息分类ABM 应用桌面工具栏消息BM 按钮控件消息CB 组合框控件消息CBEM 扩展组合框控件消息CDM 通用对话框消息DBT 设备消息DL 拖曳列表 ...
- VS2010/MFC字体和文本输出:文本输出
字体和文本输出:文本输出 本节主要讲解文本输出的方法和实例. 文本输出过程 在文本输出到设备以前,我们需要确定字体.字体颜色和输出的文本内容等信息.Windows窗口的客户区由应用程序管理,所以我们还 ...