怎样把经常使用的小表存放在KEEP缓冲区中

上一篇 / 下一篇  2007-01-22 00:00:00 / 个人分类:Oracle结构与管理

1)分配keep缓冲区

alter system set db_keep_cache_size = 20m;

2)把表存放在keep中

create table test (a nuber) storage (buffer_pool keep);
或者
alter table test storage(buffer_pool keep);

insert into test values (1);
或者查询记录
select * from test;

3)查看进行了几次物理读,并且在哪个缓冲区里读:

select name,physical_reads,db_block_gets + consistent_gets mem from v$buffer_pool_statistics
where name='KEEP';

4)再查询表记录,然后观察进行了几次物理读,并且在哪个缓冲区里读:
select * from test;

select name,physical_reads,db_block_gets + consistent_gets mem from v$buffer_pool_statistics
where name='KEEP';


注:
1)对表test就行访问时都在db_cache_pool操作。如果没有分配b_keep_cache_size则不会放在keep缓冲区中。

2)如果在把表的内容放入KEEP缓冲区之前,已经对表就行访问,这时数据会放在DB_CACHE_SIZE中。则每次进行数据读取的时候,都从DB_CACHE_SIZE中读取,可以使用如下命令,把DB_CACHE_SIZE中数据清空:
ALTER SYSTEM FLUSH BUFFER_CACHE;

3)alter system flush shared_pool;使用命令刷新共享池,会造成重新分析sql语句。

请参考:

http://www.unixgroup.net/viewtopic.php?p=11639#11639



TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-05  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 1667
  • 日志数: 1074
  • 图片数: 1
  • 建立时间: 2008-05-28
  • 更新时间: 2008-10-07

RSS订阅

Open Toolbar