任何知识要穷根到底,不然今天db_recycle_cache_size的作用要被老师误导了。
先简单介绍一个两者的区别
db_keep_cache_size:让表长期保存在内存区中,提高查询速度,这个区域的数据不参与LRU哦。
db_recycle_cache_size:正常情况下,数据缓存在db_cache中,要经地LRU算法才会清除,如果有一张很大的表,使用又很少,如果缓存在内存,再经过LRU算法,是不是要在内存存放好长一段时间呢?这有些浪费资源,就指定这个参数,让指定的表缓存在recycle内存区中,尽快地从内存中清除,又不是采用lru算法。
db_cache_size:默认数据库缓冲区,正常情况下,所有缓冲的表数据需要经过LRU算法,才会从内存中移除。
default缓冲区:等于db_cache_size - db_keep_cache_size-d - b_recycle_cache_size
注意:default缓冲区、db_keep_cache_size、db_recycle_cache_size是三个独立的内存区。
修改keep、recycle内存区大小:
SQL> alter system set db_recycle_cache_size=20M;
System altered
System altered
SQL> alter system set db_keep_cache_size=20M;
System altered
System altered
SQL> show parameter buffer_pool
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
buffer_pool_keep string
buffer_pool_recycle string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
buffer_pool_keep string
buffer_pool_recycle string
修改表存储参数,以修改表的缓冲区位置,这样下次再调用该表的时候,就缓存到请的缓冲区中。
SQL> alter table testexp storage(buffer_pool recycle);
Table altered
Table altered
SQL> alter table testexp storage(buffer_pool keep);
Table altered
Table altered
SQL> alter table testexp storage(buffer_pool default);
Table altered
Table altered
当然,也可以在创建表的时候,指定storage参数。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7608831/viewspace-677112/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7608831/viewspace-677112/