索引当然是最重要的了,还有是否可以做数据沉淀,对于一些不是实时性的数据可以事先沉淀好(比如可以在crontab里晚上12点进行数据沉淀:)

解决方案 »

  1.   

    这个问题都是说起来容易作起来难的.
    优化无非是两部分:
      一个是数据库数据组织上的优化,
        比如:不同用途的数据放置在不同的表空间,还有就是对容量很大,并却增长快的表分区.还有表的统计数字.
      另一个是你的查询程序的优化,相应的书很多,相关的帖子也是很多的.ORACLE的一些优化技术很值得一提的是基于cost的优化,其智能性很高.能根据相关查询所用到的cpu和io数据来自行选择最佳的执行计划.
    还有就是分区技术.
      

  2.   

    实际点的话,主要是优化你的代码;如果有走高的权限,可以从数据库的优化考虑
    比如表空间等一些参数;将大文本(blob)类型的表单独存到一个表空间等!
      

  3.   

    象这样的规模恐怕必须用到partition甚至并行服务器,oracle是不怕你数据量大的,只要你有合适的设备,比如大型的服务器、高性能的磁盘控制器(如RAID10)、多个高速的磁盘、足够的内存等等,看你的投资预算
      

  4.   

    我发的一贴。
    http://www.csdn.net/expert/topic/784/784070.xml?temp=.818432
      

  5.   

    oracle数据库到了千万级再怎么优化也不行了,更不用说过亿的记录了,如果你的数据库记录过亿的话就不要考虑oracle了,试试sybase的IQ吧,查询性能不错,在亿的数量级上的查询还可以忍受速度!
      

  6.   

    我也觉得楼上的比较有理。任何一个数据库不会怕表多。只会怕数据过于集中在一个表中虽然我不懂Oralce :)
      

  7.   

    哦 终于看到有人提到sybase的IQ了 那个东西还行
      

  8.   

    同意KingSunSha(弱水三千) 、 wangtaopublic(软件冰子) 的建议。
      

  9.   

    做好分区,分表工作,我个人认为离SYBASE的IQ也不会相差太远,海量数据确实不是很好玩,每个数据库也都一样.
      

  10.   

    了解Sybase IQ的人都知道,它的一个重要突破是采用了按列存储技术。其主要目的是为在海量数据查询中,提高数据检索效率。例如:在一个有20个列的customer表中,语句:select id,name,age from customer 在普通的数据库会将20个列的数据都读出来,再进行运算。而IQ中,只需选出用户关系的几个列,即列id,name,age就可以了,从而大大提高检索效率。在oracle数据库种目前,还没有采用类似的存储技术,不过我们可以借鉴这种思想,将customer进行纵向分片,即将高频使用的字段组织在一个表中,而将另外的字段组织在其他表中,两个表使用同一个关键字。同时,辅助横向分片技术,即将数据按月份、地区等分类组织在不同的表中,也可时增加检索的准确率,从而提高效率。
      

  11.   

    不但要考虑分区,索引,分表,还要考虑把分区分布在磁盘阵列的不同磁盘上,充分发挥阵列的速度优势。分区是一种策略,做的好,查询性能的提升是非常明显的。查询语句的优化也很关键。一言难尽,只有在实践中不断调整,我有过把千万条记录级表的查询时间从100S降12S的经历,觉的ORACLE现在还是最棒的。
      

  12.   

    infomix 吧
    我觉得如果处理海量数据,就我的经验还是INFORMIX好,
    无论是导入海量数据,还是查询海量数据,
    都是最合适的,其他数据库都没法比的。
    informix的平行查询器真是非常有效,
    同时对于查询上亿条记录的表,即使不对表进行分区,利用Temp表可以几分钟出来结果。
    当然设备的大投入是首要的。
      

  13.   

    我正在做一个ERP内的基于Web的数据查询,无限关注之中.....