我要测第一次查询时的时间, 除了机器重起后
再测,有没有什么办法, 让oracle 不使用缓存。 我将
数据库实例和相关进程都杀掉,然后重起oracle各个进程,
,查询,发现还是用了缓存, 比机器重起后再查询的时间
短得多。
    有人建议 alter system flush buffer_cache 或者将
tablespace 脱机再联机;这2种方法我试了之后似乎确实没查“缓存”,时间明显
增长,但是跟机器重起的那个值仍然只有其1/5,还是用到了某个“缓存” :(   请问是什么导致机器第一次重起后的那次查询时间如此长, 是不是查完第一次后数据库文件的部分块被操作系统缓存了呢? 后来我发现换张表, 大小一样, 结果查询时间跟机器重起后再查的查询时间相当。感觉是不是操作系统的缓存导致的, 又没有什么办法
禁止他?

解决方案 »

  1.   

    查询时间受很多很多因素的影响,除了数据库的cache之外,也受1 操作系统的 虚拟内存/交换分区2 磁盘的 cache 
    影响,像楼主这种情况,偶也遇到过,偶觉得1 不能用执行时间来衡量一个SQL语句的优劣2 执行计划是关键,是否稳定也很关键3 consistent gets/physical reads 之和;sorts((memory/disk)次数才是关键btw:
    alter system flush buffer_cache 有这个语法么?
    偶执行它怎么报错阿:-)alter system flush shared_pool 这个是可以的,但达不到清除数据cache的目的。
      

  2.   

    在10g 能用 alter system flush buffer_cache