ITPub博客

首页 > 应用开发 > IT综合 > 固定缓存对象

固定缓存对象

原创 IT综合 作者:foreverlee 时间:2005-09-15 16:40:51 0 删除 编辑

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

[@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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 七夕体闲论坛K歌
请登录后发表评论 登录
全部评论

注册时间:2008-11-26

  • 博文量
    72
  • 访问量
    1356456