固定缓存对象

尝试在内存中固定经常使用的对象,包括表,存储过程等。

[@more@]

一 固定频繁使用的表
如果我们要固定表,那么可以在创建表的时候或者修改表属性时使用CACHE关键字,将表放置到Buffer Cache的LRU列表的MRU端。通常我们需要对于较小的但是频繁使用的表进行这种操作。

ALTER TABLE TABLE_NAME CACHE;

我们也可以将需要频繁使用的表放置到另外一个独立的Buffer Cache中,比如KEEP池。这种操作可以使这些表的数据不至于很快被清除出Default Buffer Cache。

ALTER TABLE STORAGE (BUFFER_POOL KEEP); ALTER INDEX
STORAGE (BUFFER_POOL KEEP);

比如:

ALTER TABLE TEST1 STORAGE (BUFFER_POOL KEEP);


二 固定频繁使用的过程函数
检索需要在共享池中要求大于100K连续空间的对象:

select *
from v$db_object_cache
where sharable_mem > 100000
and type in ('PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'FUNCTION');

考察返回的结果,确认是否需要pin到共享池中,返回结果中的KEPT字段如果是YES,那么表示该对象已经固定在了共享池中,为NO,则表示还没有固定。

如果需要固定,使用下面的语句:

exec dbms_shared_pool.keep('SYS.STANDARD');

数据库默认安装的时候没有创建dbms_shared_pool包,所以需要先创建该包。

cd $ORACLE_HOME/rdbms/admin

sqlplus “/ as sysdba”

@dbmspool.sql

三 绝缘很少使用的表

SGA内存空间很宝贵,所以我们通常将很少使用的表排除出SGA
SQL> ALTER TABLE TEST2 STORAGE(BUFFER_POOL RECYCLE);

Table altered.


相关知识:
SGA中Database Buffer Cache 由三个部分组成
DB_CACHE_SIZE 保存普通数据库对象
DB_KEEP_CACHE_SIZE 保存经常使用的数据库对象 (经常使用的小表)
DB_RECYCLE_CACHE_SIZE 保存很少使用的数据库对象 (很少使用的大表)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/76065/viewspace-806557/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/76065/viewspace-806557/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值