请教,需要处理的数据量太大怎么办?
请教,需要处理的数据量太大怎么办?
情况是这样的:
数据库中有几个表,
每个表记录都超过10万条,
在查询时需要交叉连接查询(outer join)三个表,这就造成数据库会生成一千万条以上记录的情况,所以这样每查询一次都需要两秒以上时间.像这样的查询客户每次请求都需要执行好几百次,所以要等十几分钟才能结束.
有什么样的方法可以让数据库运行速度快一点吗?
数据库结构是不可以修改的.
这是为一个特种行业做科学计算的程序,以后数据量还在不断增大,数据库PSQL安装在LINUX系统上面内存2G,CUP3.0,服务器硬盘.
大家说得都很对. 18 楼 林秋枫 2006-12-11 一个表才10万条数据量谈不上大。
目前做的系统,超过2000万条记录的表有几个,超过300万条记录的表也听多的。
没有用hibernate那种恶心的东西,直接用jdbc。 19 楼 rf_wu 2006-12-11 如果只是搜索的话,
用lucene? 20 楼 byk 2006-12-11 解决方案:
1,优化索引
2,使用存储过程
3,使用中间结果集,把一些固定的数字提前算好 21 楼 cuihz.hibernate 2006-12-11 可以考虑一下用索引技术来解决。lucene 22 楼 clmwy 2006-12-11 服务器的配置有点低了.SQL可能也要优化一下.可以看一下优化SQL这方面的资料. 23 楼 aunox 2006-12-12 数据库层面:
1、统计使用最多的SQL的关键字段,然后根据需要进行索引加快速度(索引字段顺序和查询SQL语句where后面的条件顺序对检索速度影响也是有很大的关系)
2、设计表时不一定把一个完整对象信息作为一行来建表保存,考虑分拆表,虚关联就可以了
3、数据随着时间增加比较快的表可以考虑按照时间分表或者是给数据库进行分区,根据关键字或者是时间进行分区都是可以的
4、查看数据库检索的cache命中率,调整查询内存大小,提高cache命中率,数据库其他方面的配置都可以根据实际使用情况进行调整优化摸索
程序设计层面:
1、根据数据变化频度进行必要的cache对加快速度也是很好的,效果立竿见影
2、如果是可能的话,最好是能根据不同的条件生成静态HTML文件,这种效果最好,不过就看实际情况了能不能这样了 24 楼 shaucle 2006-12-22 几十万条本来就是小数据.
俺这里有几个几千万的,俺同事现做的有几亿.
用索引的话,几千万的查询也是ms级别
但没架构好的话,几十万条的也会出现等待几个小时的(比如toplink乱用产生迭代)
关键还是架构!