首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

高级设计—系统查询统计使用规划

2013-01-20 
高级设计—系统查询统计应用规划最近在改进一个老系统查询效率,数据量也不是很大,整个数据库就3-5G,单表记

高级设计—系统查询统计应用规划
最近在改进一个老系统查询效率,数据量也不是很大,整个数据库就3-5G,单表记录1000W差不多,在查

询的时候碰到了查询超时的问题,比如查询一个月的记录,大约100W-500W,做过信息系统的大概都知道

,查询这样的数据量,不是超时就是要等了几十秒到几分钟,做起统计来,就更慢了。前段时间一直在

优化速度上考虑,将执行脚本改为存储过程、制定合适的索引,改进SQL条件。速度虽然有了很大的提升

,但还是不尽人意,为什么呢??无论怎么优化,几百万的数据量放在那里,你还是等段时间才能出结

果,而且还是会有出现超时的可能。因此我就换了一个角度:我为什么要让他们查询到这么多的记录,

并把这些记录都放在一个界面上,这么多记录他们看的过来么?想到这里,我意识到可能在设计和解决

这个问题的时候走了极端,应该跳出来思考,不过还不能系统的解决!我经验不够,希望各位指点一二

。以下是我当前的思想:
回到信息系统的最初设计原理,首先是录入数据,然后查询数据,然后有报表、数据导出,在数据量小

的情况下,这个过程是很合适的。但数据量大了以后就出现一个问题,首先是报表,一个有100W行数据

的报表需要打印多少页有算过么??最少是1万,这样就不可能被打印,从而失去了意义,接下来是导出

,数据的导出是有意义的,也是必须的。一般信息的导出都是本地查询后保存的结果,导出的格式也有

相应的设置。如果我不容许用户查询这么多数据,那就很有可能限制了数据导出的使用,这样的限制可

能会带来致命的后果。
很想知道大型的信息系统是如何解决这样的问题
[解决办法]
分开表存,你把一个月的数据存在一个表里面,这样一张表就100W-500W.查询起来方便些

还有就是把统计分析数据都算出来存到一张表里,跟据你的报表灵活的存储,比如把每周的统计在周末时候就都汇总出来存起来,这样计算这个月的直接在这个表里查一下就好了.

用空间换时间,在数据挖掘里面经常用的方法
[解决办法]

引用:
月表能有效的减少单表的容量,是个好办法。
我想把查询和统计、导出都分开,查询限制返回的记录条数,同时提供尽可能的方式来满足筛选要求。
统计和导出不用查询的数据,单独执行查询后返回,这样设计起来可能会有一些问题,请能手指点!

1楼的方法很好,银行的海量数据就是这么处理的。如果你的查询统计结果是静态的报表,也就是说按月、按年的去统计而不是实时的,就可以将统计结果保存到一个表里。这样会产生的问题就是如果修改了历史数据,当月或当年的报表是否需要修改,如果需要修改就写一个事务,每天晚上服务器空闲的时候更新报表内的数据。
[解决办法]
再说,即使查几百万的数据,也没必要一次查出来吧。
肯定是分页查询显示。

信息导出的处理也不会是问题。
不同的数据库,不同开发语言也有着不同的技巧
[解决办法]
从SQL Tunning角度和业务角度考虑

学习~~

热点排行