--************************************-- Oracle 表缓存(caching table)的使用--************************************ 1.使用caching table 的原因 在通常的情况下,应用程序访问在cache中的数据块将按照LRU算法来进行处理。然而对于小表的访问,当使用全表扫描时,则该表 中的块会放置LRU列表最近最少使用尾部的(LRU端),因此很快就被淘汰出局。然而使用基于成本优化的方法,对于小表进行查询以及收 集统计信息,大多情形下走的是全表扫描,因此势必造成一种情形,即该表后续需要再次访问,而每次使用了全表扫描,而该对象很快 被淘汰出局,因此需要再次读入到buffer cache,耗用了大量的I/O。 2.解决该问题的方法 设计表为caching table ,即使对该表使用全表访问时,则该表对象的块仍然被放置在LRU列表最近最多使用的尾部(MRU段) 不要过度的使用caching table,以免造成性能下降 通常将caching table 存放在keep buffer pool,缺省的情况下会放置在default buffer pool。 3.具有cache属性与pin 的差异 对于具有cache属性的对象,并不是将该对象pin到cache里,而是尽可能的延迟该对象驻留cache的时间 而对于pin对象,则是将该对象常驻到内存 4.设计cache table 的方法 创建表对象时,使用cache子句 修改表对象时,使用cache子句 使用cache 提示 创建表对象时使用cache,如下面的例子 create table tb_test (id number ,name varchar2(20) ,sex char(1) ,age number ,score number) tablespace users storage(initial 50k next 50k pctincrease 0) cache; --指定cache子句 使用alter table 修改已经存在的表 alter table scott.emp cache; 可以使用nocache来修改对象,使其不具备cache属性 alter table soctt.emp nocache 使用hint提示符来实现cache select /*+ cache*/ empno,ename from scott.emp;
Linux下MySQL编译安装备忘Oracle 冷备份相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)