在很多业务系统中,往往涉及报表数据统计的功能,这些统计功能往往根据不同的行业、不同的分析角度而进行,不过,其相同点都是对业务明细数据根据需求进行各种统计汇总组合。这些功能在业务数据量较少的前期,一般没什么性能问题,但随着时间、业务的发展,数据量越来越多,而之前的一些速度很快的报表功能会变得越来越慢。这些现象估计有比较多人员在实际中碰到,所以,现在想看看各位日常中是如何解决这种问题的,最好包括从明细数据的组织、报表结果的数据如何组织、功能架构的原理逻辑等一系列的角度说明下。
    另外,在数据仓库、数据挖掘等领域,数据量那么大,类似上述的现象问题又是如何解决的?    欢迎大家将实际中的上述类似问题的解决方案分享下,谢谢!ps:
   可用分不多,倾我所能了。

解决方案 »

  1.   

    建议网上搜索一下 OLTP, OTAP, ETL, 数据仓库的知识。 数据仓库和你所说的现在这种事务的操作数据库数据理今不同。
      

  2.   


    你的这个问题,已经是数据仓库的概念了。
    我们是把数据从在线事务数据库中提取出来,形成data warehouse, 以供报表分析工具使用。在提取中设置不同的维度来实现。所以仍建议你先看一下数据仓库的概念。
      

  3.   

    DW这个我弄过一段时间,是比较独立出来的了,
    而我现在要问的,只是一些业务应用系统中一些业务简单的汇总统计功能罢了,难道一个小业务系统,也要专门去搞一个DW来处理,有点太过了吧?
    奇怪了,难道你们平时的系统都没有统计功能模块的(例如一些统计报表之类的)?我只是想了解下你们平时在这方面怎么处理的,不会是为了一个系统中某个小统计功能而去搞个DW吧?
      

  4.   

    根据报表所需要的查询,首先要对数据库进行优化,如建立索引什么的。
    对大型的表,可根据需要定时将数据从表中取出,放到另外一个表中,专门供查询用,不影响事务的进行。
    数据量再大的话,可以定期从数据库备份数据到另外一个数据库,查询这个数据库了。
    如果再大的话,那就用DM和DW,用专门的DTS工具抽取数据,进行重新组织和处理了,就是所谓的数据仓库系统了。
      

  5.   

    我倒是觉得现在要是有一种系统的解决问题的方法就好了。这个系统要具备这样几个功能:
    1、收集数据。能够根据需要,方便的生成收集数据的页面。(带导出excel表格)(当然要有用户管理、授权的功能)
    2、储存数据。
    3、分析数据。
      

  6.   

    没研究过数据仓库,被迫把原来公司做的报表都改成PROCEDURE了,哎,改了我几个月…… -_-b
      

  7.   


    楼主 看你讲内容就知道你走入了一个误区;
    一个系统肯定有它能承受能力设计,在设计系统时候就应该对业务量和数据量有所评估。
    当业务量和数据量开始飙升或者差不多超过系统能承受压力时候,我们必须改善或者修改系统架构来解决,不是增加一两个表就可以解决了。当报表速度慢了,我们首先是检查问题出现原因。是SQL 不优化?还是系统数据量太大超过我们估算?是否服务器配置不好等等。
    若SQL 不好,可以优化;若数据量太大,之前没有考虑数据量到,只能临时增加一些机制来快速解决,如:每个月对某些特定数据进行统计;若服务器不好,就要求买;出现问题原因很多;但可以总结为:系统使用初中期出现的问题,一般都是SQL不优化 和 对系统数据量评估不足。到了系统使用后期就是数据量爆炸性增加,系统需要修改架构。
      

  8.   


    其实你后面提到的那些点,都是在我前面问的解决方案的一部分,你这些方面都是从大的角度去论述。
    如果要细一点,我觉得可以如下:
    1、物理组织上:
       分表(区)、同库、分库、分服务器等;
    2、处理逻辑上:
       直接查询、采用一般固定式的中间表、采用基于数据仓库的数据中间表(易扩展)等;
    3、其它:
       表字段数据类型优化、数据表关系设计优化、索引优化、SQL写法优化、硬件资源的优化、任务调度的资源均衡等;
      

  9.   

    本文提出的问题,本人在1995年时候就感觉到,但是一直没有找到更加合理的方法,多数做数据库开发的人,一般不考虑后期数据量变大的问题。因为这个问题是在程序使用一段时间,更准确的说是使用了3年或5年以后以出现的,所以很容易被大家忽视。数据量的增加造成查询历史数据耗费时间加长,只有在先期合理的进行设计才能合理的解决这个问题。我在人民银行上班,我们国库用的核算系统,使用的sybase数据库管理系统,数据量确实很大,它处理的方法是把上一年的数据库转成历史库,也就是一年一个数据库,用那一年的就恢复那一年,非常方便,要不没个整!
    我感觉要想以后不遭罪,必须先期受点累,其实最重要的还是多看看大型企业或机关的信息系统,如银行、电信、铁路等用的系统,可能你就会在数据仓库管理方便上一个很大的台阶!