zoukankan      html  css  js  c++  java
  • oracle中如何把小表钉在内存中

    oracle 8i中db_block_buffer的大小决定buffer cache的大小

    oracle 9i&10g中由db_cache_size的大小来决定

    因为内存空间是有限的,所以oracle采用LRU算法来调度谁来使用内存

    但是因为许多的批处理操作(如全表扫描)可能会导致buffer cache的刷新,

    这会导致将经常使用的数据挤出buffer cache

    oracle在改进LRU算法的同时,采用了另一技术:就是buffer cache的多缓冲池做法

    oracle的db_buffer_pool由三部分组成:

    buffer_pool_defualt

    buffer_pool_keep

    buffer_pool_recycle

     

    如果要把表钉死在内存中,也就是把表钉在keep区。

       相关的命令为:

    alter table ..... storage(buffer_pool keep);

    这句命令把表示表如果缓存的话是缓存在keep区。

    可以通过语句:

    select owner,table_name from dba_tables where buffer_pool='KEEP';查询到改表是放在keep区中的。

    但是不意味着表已经被缓存了,只是说明你可以进去keep pool。

    下面的语句把表缓存:

    alter table  .... cache;

    可以通过

    select  owner,table_name from dba_tables where rtrim(cache)='Y';

    查询到该表已经被缓存了。

    加入到keep区的表不是说不能被移出内存,不过是比较不容易移出内存。

    也可以手工来移出内存,命令如下:

    alter table ... nocache;

  • 相关阅读:
    实验:缓冲区溢出
    树莓派4B安装和使用openEuler系统
    stat命令的实现-mysate
    20191310Lee_Yellow第五章读书笔记
    反汇编测试
    openssl编程
    Openeuler安装完整man手册
    20191310Lee_yellow缓冲区溢出实验
    《奔跑吧!树莓派》实验指导第三章
    20191310李烨龙第四章读书笔记
  • 原文地址:https://www.cnblogs.com/taowang2016/p/3284612.html
Copyright © 2011-2022 走看看