我最近在oracle9i上进行大概10G数据的查询,发现很慢,大概要两分钟;而我在oracle8.1.7上进行实验,查询却很快,只要15秒。我不知道是什么原因。我的两种实验环境如下:
1. ibm 服务器 2G内存,windows2Kserver+oracle9.2.0.1
    oracle数据文件放在四个盘上共20多个数据文件(因为数据可能很大),一个表数据是570 0000 行,查询很慢,大概要两分钟。(oracle SGA PGA 我己调整为大概一个G)2. 普通pc机,2.4PIIII 256M windows2000 +oracle8.1.7 
    oracle 数据文件放在一个盘上只有一个数据文件,上的表数据是一样的,也是570 0000 行,查询却很快,只要15秒。
  请教高手,为什么这里查询的响应时间差距这么大,跟oracle,操作系统的设置有关吗,还是什么原因,望高手指点。

解决方案 »

  1.   

    补充:ibm服务器的磁盘用的是阵列。而pc机的磁盘只是一般ide硬盘。
      

  2.   

    用 autotrace 
    tkprof  看你的select 的执行情况
        index 设计了吧  analyze 没有
      

  3.   

    数据库性能应该从几个方面考虑:
    1.网络性能2.操作系统和硬件性能3.数据库自身性能优化包括SQL语句优化、合理建立索引、性能分析和调优4.最好能分析瓶颈在何处,大表要分区提高性能
      

  4.   

    在init.ora文件中查看并调整内存配置后,重启。
      

  5.   

    今天我又在hp的机器上进行了测试,环境如下:hp入门级服务器,win2K+oracle9.2.0.1 
    一个表数据文件,同样的数据,数据上好后,直接查询大概要3分钟, 对数据和索引作分析后,查询速度比较好,大概19秒。但一旦重新启动服务器,就又不行了,查询又是3分钟。重新对索引作分析查询速度又好了(19秒)。 按理说,给索引做的分析结果应该放在数据字典中能够存起来,为什么oracle9i不行呢? 
      同样在oracle8.1.7中不存在这个问题(查询一直是15秒左右)。所以结合上面的实验我觉得问题在服务器上,oracle9i中怎样实现将索引的分析结果存入数据字典并长期有效,这是我个人的一点看法。希望高手们能多加指点。  
      

  6.   

    你重启以后 用autotrace看看 select 是否用了index 
    看你的对表的分析是否还在 应该在的
    不行你还可以用dbms_stats.set_table_stats给表设置分析数据
      

  7.   

    1  你分析之后,分析过的Sql语句及可能的执行结果已经存在SGA中,再次执行是从SGA中度去,速度就快多了,但重新启动之后,SGA中的丢失,又要重新分析,重新从磁盘读取数据,耗费资源就大了。
       2   ibm 服务器和普通pc对数据库的设置是否一样,大表的数据文件是否在不同的磁盘上,并对表都有Index?