项目绝大部分操作都要使用一个基本信息表
有没有办法把这个表一直放内存中,这样速度快些有没有别的办法,比如
把这个表的内容读读到内存中,这样就不要读表了
到晚上在和表里同步一次
放在map里会不会比查表快表的内容并不多应该在100这个数量级上吧

解决方案 »

  1.   

    create/alter table ...... storage(buffer_pool keep); 当表被读入的时候,放入keep pool,keep pool 中的数据会尽量长时间的保留,保留的时间长短依据keep pool的负载而定。
        create/alter table ...... cache; 当全表扫描时,放入default pool 的LRU热端(如无cache,则放入LRU冷端,很快就会被age out),适合频繁使用的小表,如果有很多表要cache,那应该把表放如keep pool.
      

  2.   

    那就索性不要放在DB的内存中,
    直接用C#,JAVA等编程语言将小表的内容读出后,放在Hashtable放在application server的内存.然后使用~
      

  3.   


    ALTER TABLE "tablename" CACHE
      

  4.   

    如一楼说的,将表放在keep池中即可。数据库本身有的功能,不建议通过程序另外实现。
      

  5.   

    你要是对oracle的系统架构多了解一点,就会对oracle更有信心的:)就算你不把表放在keep池中,而是放在默认的default池中,如果这个表访问频繁,那也不会有什么问题。oracle存储数据前,都要将block读入到数据缓存中,default使用的是LRU算法,所以频繁访问的数据基本上也是会保留在内存中的。