对海量数据如何优化查询速度? 索引当然是最重要的了,还有是否可以做数据沉淀,对于一些不是实时性的数据可以事先沉淀好(比如可以在crontab里晚上12点进行数据沉淀:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题都是说起来容易作起来难的.优化无非是两部分: 一个是数据库数据组织上的优化, 比如:不同用途的数据放置在不同的表空间,还有就是对容量很大,并却增长快的表分区.还有表的统计数字. 另一个是你的查询程序的优化,相应的书很多,相关的帖子也是很多的.ORACLE的一些优化技术很值得一提的是基于cost的优化,其智能性很高.能根据相关查询所用到的cpu和io数据来自行选择最佳的执行计划.还有就是分区技术. 实际点的话,主要是优化你的代码;如果有走高的权限,可以从数据库的优化考虑比如表空间等一些参数;将大文本(blob)类型的表单独存到一个表空间等! 象这样的规模恐怕必须用到partition甚至并行服务器,oracle是不怕你数据量大的,只要你有合适的设备,比如大型的服务器、高性能的磁盘控制器(如RAID10)、多个高速的磁盘、足够的内存等等,看你的投资预算 我发的一贴。http://www.csdn.net/expert/topic/784/784070.xml?temp=.818432 oracle数据库到了千万级再怎么优化也不行了,更不用说过亿的记录了,如果你的数据库记录过亿的话就不要考虑oracle了,试试sybase的IQ吧,查询性能不错,在亿的数量级上的查询还可以忍受速度! 我也觉得楼上的比较有理。任何一个数据库不会怕表多。只会怕数据过于集中在一个表中虽然我不懂Oralce :) 哦 终于看到有人提到sybase的IQ了 那个东西还行 同意KingSunSha(弱水三千) 、 wangtaopublic(软件冰子) 的建议。 做好分区,分表工作,我个人认为离SYBASE的IQ也不会相差太远,海量数据确实不是很好玩,每个数据库也都一样. 了解Sybase IQ的人都知道,它的一个重要突破是采用了按列存储技术。其主要目的是为在海量数据查询中,提高数据检索效率。例如:在一个有20个列的customer表中,语句:select id,name,age from customer 在普通的数据库会将20个列的数据都读出来,再进行运算。而IQ中,只需选出用户关系的几个列,即列id,name,age就可以了,从而大大提高检索效率。在oracle数据库种目前,还没有采用类似的存储技术,不过我们可以借鉴这种思想,将customer进行纵向分片,即将高频使用的字段组织在一个表中,而将另外的字段组织在其他表中,两个表使用同一个关键字。同时,辅助横向分片技术,即将数据按月份、地区等分类组织在不同的表中,也可时增加检索的准确率,从而提高效率。 不但要考虑分区,索引,分表,还要考虑把分区分布在磁盘阵列的不同磁盘上,充分发挥阵列的速度优势。分区是一种策略,做的好,查询性能的提升是非常明显的。查询语句的优化也很关键。一言难尽,只有在实践中不断调整,我有过把千万条记录级表的查询时间从100S降12S的经历,觉的ORACLE现在还是最棒的。 infomix 吧我觉得如果处理海量数据,就我的经验还是INFORMIX好,无论是导入海量数据,还是查询海量数据,都是最合适的,其他数据库都没法比的。informix的平行查询器真是非常有效,同时对于查询上亿条记录的表,即使不对表进行分区,利用Temp表可以几分钟出来结果。当然设备的大投入是首要的。 我正在做一个ERP内的基于Web的数据查询,无限关注之中..... 求某一年的第一周的第一天的算法 oracle关于字符串的截取。 Oracle中SqlPlus SqlPlusworksheet SqlScratchpad分别执行存储过程时有什么区别? 等号冒号的意思 Windows2008下使用.NET开发, Oracle11g, 打开连接时出现"无法列入分布式事务处理",请问:如何解决? 过程里提示无权限 blob字段处理 送分了,大家顺便帮助看看这两件事. ora-00095是什么问题,应该怎么解决? 请问exp和imp如何查看导入导出花费的时间 大家的表空间是怎么命名的? 大型ORACLE数据库应用的讨论,欢迎高手提出见解
优化无非是两部分:
一个是数据库数据组织上的优化,
比如:不同用途的数据放置在不同的表空间,还有就是对容量很大,并却增长快的表分区.还有表的统计数字.
另一个是你的查询程序的优化,相应的书很多,相关的帖子也是很多的.ORACLE的一些优化技术很值得一提的是基于cost的优化,其智能性很高.能根据相关查询所用到的cpu和io数据来自行选择最佳的执行计划.
还有就是分区技术.
比如表空间等一些参数;将大文本(blob)类型的表单独存到一个表空间等!
http://www.csdn.net/expert/topic/784/784070.xml?temp=.818432
我觉得如果处理海量数据,就我的经验还是INFORMIX好,
无论是导入海量数据,还是查询海量数据,
都是最合适的,其他数据库都没法比的。
informix的平行查询器真是非常有效,
同时对于查询上亿条记录的表,即使不对表进行分区,利用Temp表可以几分钟出来结果。
当然设备的大投入是首要的。