ITPub博客

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

固定缓存对象

原创 IT综合 作者:csbin 时间:2007-05-20 20:06:40 0 删除 编辑

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


一 固定频繁使用的表
如果我们要固定表,那么可以在创建表的时候或者修改表属性时使用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博客 ” ,链接:https://blog.itpub.net/720091/viewspace-915658/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 数据库复制
请登录后发表评论 登录
全部评论

注册时间:2009-01-12

  • 博文量
    69
  • 访问量
    1479820