重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle中如何将表缓存到内存中
10年积累的成都网站建设、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有临沧免费网站建设让你可以放心的选择与我们合作。
由于在一些静态资料表在数据库中被频繁的访问,所以可以考虑将这些数据量不大的表缓存到内存当中。
共有2种方法:
例:将fisher表缓存到内存中
1)altertable fisher cache; 2)altertable fisher storage(buffer_pool keep); --取消缓存 1)altertable fisher nocache;2)altertable fisher storage(buffer_pooldefault); selecttable_name,OWNER,cache,buffer_pool fromdba_tables where table_name='FISHER'; --查看是否缓存 select* from dba_segments where segment_name='FISHER' ; --查看表大小
两者区别:
1) cache是将表缓存到share pool 中,该操作直接将表缓存的热端,受LRU算法控制。
2)将表缓存到一个固定的内存空间中,默认情况下buffer_pool空间为0,。需手动设置空间大小。
alter system set db_keep_cache_size=50M scope=both sid=‘*';
mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表;而oracle中更改user的数据后会立即生效,不需要刷新。
物化视图建立的时候可以定义刷新方式,一般有: refresh fast 和 refresh complete之分,前者是只更新主表中变化的记录(主表必须建立materialized view log),而后者是把MV里面的数据全部更新。此外,更新方式还可以有:on demand, on commit, on force之分. on commit是及时更新。其实用户创建materialized view的时候可以指定更新频率,给你个例子
CREATE Materialized View mv_terminal
REFRESH FAST
NEXT SYSDATE + 30/(24*60)
AS
SELECT * FROM ........
这个MV每30分钟刷新一次,只刷新改变的数据
ALTER SYSTEM FLUSH SHARED_POOL
这个语句清除SGA中的 shared pool,shared pool存储下面的信息:
1、数据字典
2、Shared SQL PL/SQL,存储过程、函数、包以及触发器
但是有一点要清楚的是假如这些对象正在使用时是无法清除的。
REFRESH FAST
ON DEMAND
START WITH SYSDATE
TRUNC(sysdate) + 1+ (1/24)
NEXT TRUNC(sysdate)+1+13/24
-- 加入缓存.
SQL ALTER TABLE a CACHE;
Table altered.
-- 取消加入缓存.
SQL ALTER TABLE a NOCACHE;
Table altered.