oracle中如何将表缓存到内存中

oracle快速将表缓存到内存中,使得访问速度加快。

重点部分:

共有2种方法:

--加入内存
alter table MDM_WLZSJ_CODEBG cache;

alter table MDM_WLZSJ_CODEBG storage(buffer_pool keep);  ---常驻内存
 
--取消内存
 
alter table NDN_WLZ_CODEBG nocache;

alter table NDN_WLZ_CODEBG storage(buffer_pool default);
 

--查看是否加入缓存
SELECT * FROM USER_TABLES WHERE CACHE LIKE '%Y';

select table_name,OWNER,cache,buffer_pool from dba_tables where table_name='MDM_WLZSJ_CODEBG';  --查看是否缓存

select * from dba_segments where segment_name='MDM_WLZSJ_CODEBG' ;          --查看表大小

两者区别:

  1) cache是将表缓存到share pool 中,该操作直接将表缓存的热端,受LRU算法控制。

  2)将表缓存到一个固定的内存storage空间中,默认情况下buffer_pool空间为0,。需手动设置空间大小。

 刨根问底:

create table 表名 (字段) storage (buffer_pool keep); --建表时把表缓存到KEEP中

alter table 表名 storage(buffer_pool keep);--把已存在的表缓存至KEEP中

create table 表名(字段..) storage (buffer_pool keep) cache;--创建缓存表

oracle的db_buffer_pool由三部分组成:

buffer_pool_defualt

buffer_pool_keep

buffer_pool_recycle

如果要把表钉死在内存中,也就是把表钉在keep区。

相关的命令为:

alter table ..... storage(buffer_pool keep);

这句命令把表示表如果缓存的话是缓存在keep区。

可以通过语句查询:

select table_name from dba_tables where buffer_pool='KEEP'; ---查询到改表是放在keep区中的。

但是不意味着表已经被缓存了。

下面的语句把表缓存:

alter table .... cache;

可以通过

select table_name from dba_ tables where rtrim(cache)='Y';

查询到该表已经被缓存了。

加入到keep区的表不是说不能被移出内存,不过是比较不容易移出内存。

也可以手工来移出内存,命令如下:

alter table ... nocache;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值