`
  • 浏览: 27607 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

请教,需要处理的数据量太大怎么办?

阅读更多

请教,需要处理的数据量太大怎么办?

情况是这样的:
数据库中有几个表,
每个表记录都超过10万条,
在查询时需要交叉连接查询(outer join)三个表,这就造成数据库会生成一千万条以上记录的情况,所以这样每查询一次都需要两秒以上时间.像这样的查询客户每次请求都需要执行好几百次,所以要等十几分钟才能结束.

有什么样的方法可以让数据库运行速度快一点吗?
数据库结构是不可以修改的.

这是为一个特种行业做科学计算的程序,以后数据量还在不断增大,数据库PSQL安装在LINUX系统上面内存2G,CUP3.0,服务器硬盘.

分享到:
评论
24 楼 shaucle 2006-12-22  
几十万条本来就是小数据.

俺这里有几个几千万的,俺同事现做的有几亿.

用索引的话,几千万的查询也是ms级别
但没架构好的话,几十万条的也会出现等待几个小时的(比如toplink乱用产生迭代)

关键还是架构!
23 楼 aunox 2006-12-12  
数据库层面:
1、统计使用最多的SQL的关键字段,然后根据需要进行索引加快速度(索引字段顺序和查询SQL语句where后面的条件顺序对检索速度影响也是有很大的关系)
2、设计表时不一定把一个完整对象信息作为一行来建表保存,考虑分拆表,虚关联就可以了
3、数据随着时间增加比较快的表可以考虑按照时间分表或者是给数据库进行分区,根据关键字或者是时间进行分区都是可以的
4、查看数据库检索的cache命中率,调整查询内存大小,提高cache命中率,数据库其他方面的配置都可以根据实际使用情况进行调整优化摸索

程序设计层面:
1、根据数据变化频度进行必要的cache对加快速度也是很好的,效果立竿见影
2、如果是可能的话,最好是能根据不同的条件生成静态HTML文件,这种效果最好,不过就看实际情况了能不能这样了
22 楼 clmwy 2006-12-11  
服务器的配置有点低了.SQL可能也要优化一下.可以看一下优化SQL这方面的资料.
21 楼 cuihz.hibernate 2006-12-11  
可以考虑一下用索引技术来解决。lucene
20 楼 byk 2006-12-11  
解决方案:
1,优化索引
2,使用存储过程
3,使用中间结果集,把一些固定的数字提前算好
19 楼 rf_wu 2006-12-11  
如果只是搜索的话,
用lucene?
18 楼 林秋枫 2006-12-11  
一个表才10万条数据量谈不上大。
目前做的系统,超过2000万条记录的表有几个,超过300万条记录的表也听多的。
没有用hibernate那种恶心的东西,直接用jdbc。
17 楼 2006-12-11  
多谢各位.
大家说得都很对.
16 楼 together 2006-12-11  
同时查询几百次,神仙也救不了你。
把个专家帮你们把系统优化一下吧,效率提高一二个数量级是完全可能的。
这个应该挪到综合技术版去吧
15 楼 presses 2006-12-10  
    一个表10万条记录左右,有几个表,所以记录只有几十万条。全部实例化放到Map里头,两G内存免强应该够。但处理过程中产生的对像就要处理好。不记得sun的jvm的堆最大能调多少。好像也是一G多。或者考虑只把两个表全部放在内存里,速度应该也提高不少。
14 楼 piliskys 2006-12-10  
设计重于优化
13 楼 dragonsoar 2006-12-09  
你得用个搜索的引挚之类的,要不是不行的,从数据库上解决不了~
12 楼 player 2006-12-09  
在查询时需要交叉连接查询(outer join)三个表,这就造成数据库会生成一千万条以上记录的情况,所以这样每查询一次都需要两秒以上时间.像这样的查询客户每次请求都需要执行好几百次,所以要等十几分钟才能结束.

感觉是“每次执行都需要执行好几百次“的问题,如果你每次执行一个sql好几百次,还是把它转换成一个存储过程什么的,还好些
11 楼 qinysong 2006-12-08  
小几十万条数据并不算多,如果数据库设计范式级别较高,采用左外联且联接字段为主/外键或索引的话,性能应该也没有问题,且并不会造成千万的纪录数量。
从直觉来说,用户一次操作要进行这样的几百次执行,我感觉这可能是最有优化空间的地方。
当然我只是估计,因为你给的信息还是很少
10 楼 bigpanda 2006-12-08  
thebestwish@msn.com 写道
不是全部交叉,只是左外连接.

顺便说一下 4楼叫 ddandyy 形象照片好漂亮呀,是您本人吗?


不是。ddandyy兄弟最喜欢用漂亮妹妹的头像。
9 楼 janh 2006-12-08  
要查询几百次的话肯定慢,不能合并到一起吗?大数据量的话最主要的是硬盘速度,可以提高硬盘系统的速度试试。
8 楼 2006-12-08  
不是全部交叉,只是左外连接.

顺便说一下 4楼叫 ddandyy 形象照片好漂亮呀,是您本人吗?
7 楼 LucasLee 2006-12-08  
为什么是外连接?看上去还是full outer join,真有必要这么做么?
把你的理由说来听听。
如果可以,不要做full outer join,很慢。
6 楼 ddandyy 2006-12-08  
做业务上的调整
5 楼 2006-12-08  
数据库可以做成分布式的吗?

花钱一向是客户最不喜欢听到的,所以换个更大更贵的,暂先不考虑.

用磁盘列阵,加快读盘速度,上多个CPU,也是可以的,但我还想多知道点别的.

相关推荐

    sqlserver表数据插入到oracle表中的一种实现方式(表结构相同)

    表结构的创建比较简单,但是表的数据量太大,一时也想不到怎么把sqlserver表数据复制到oracle中,于是请教公司主管,用存储过程实现可以查询出所有数据的insert脚本,在oracle库中创建好表,直接把sqlserver中的...

    DOS 软盘+光盘+U盘+硬盘+NTFS 想拥有更强大的DOS功能??

    2、用启动盘启动时,不是加载的功能越多越好,功能越多就意味着可用基本内存越少,产生一些问题的几率也越大,所以请根据自己的实际需要来选择对应的启动菜单。 3、本文各种DOS启动盘中存在的部分文件说明: IO....

    游戏画面就弹出内存不能为read修复工具

    程序需要一块内存用以储存数据时,就需要使用操作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是「动态内存分配...

    会计事务所实习日记.pdf

    第四天,作者继续财务报表的编制工作,这表明了会计实务操作的连续性和复杂性,需要对大量数据进行核对和分析。 从这些日记中,我们可以总结出以下几个关键知识点: 1. 会计师事务所的日常工作流程,包括阅读文档...

    光学实验基础知识PPT教案.pptx

    光学实验的主要内容包括基本物理量的测量方法、常用光学仪器的使用、学习分析光学实验中的基本光路、继续学习分析误差的方法和提高对实验数据的处理能力。基本物理量的测量方法包括焦距测量、折射率测量、光波波长...

    掉电运行

    掉电运行 我有一个项目,需要在装置掉电后可靠运行一秒钟,以便存储有关的数据,请教各位如何设计电源电路.电压是5V,功率参数暂时还不能确定,因为考虑不同封装器件功耗不同.初步考虑都用帖装器件,整个装置包括:80C196+...

    一个简单的java爬虫产品

     虽然试验成功,但是在随后的大数据量试验时,还是出现了问题。最初试验时,我只是让程序去抓取10个URL链接,当我将URL链接数改为100个时,问题出现了——URL中存在重复,而且非常容易的就变成死循环。举个例子来说...

    新生辩论赛辩题大全.pdf,这是一份不错的文件

    运用假材料 无论在规范发言还是在自由辩论中,都需要运用大量材料,可是合适的材料不容易找到,往往只能编一些假材料,包括数据、实例等。运用时要注意两点:一是材料要尽可能编得合情合理;二是不可心虚,要理直气壮...

    mall-xiaohongshu-小程序模仿小红书.zip

    而且这样处理,代码量大大的减少了。 代码如下:// 定义globalData对应的全局变量 app.js globalData: {  userInfo: null,  adressInfo:[] } // 提交地址信息,调用定义的变量 add-adress.js ...

    琪琪翻唱网站源码正式版

    (对于首批只销售20的决定其实也另有原因,主要是因为站长时间比较紧,如一下子销售太多,怕没时间做售后服务,敬请谅解!) 购买商业版本规则: 1.请在购买前咨询一下您的空间信息,是否支持FSO,文件上传支持等问题(购买前请...

Global site tag (gtag.js) - Google Analytics