每天将指定几个表中的数据进行业务处理后存入到另一张表中,是每个小时整点进行(当天零点截止到当前时间段内的数据)处理,将原有的数据更新,就是所谓的实时更新,不过是一个小时进行一次,这样做的弊端就是 想要看到当前的实时数据就必须等到整点运行完以后才能看到上一个小时的准确数据,大家有什么好的办法。不要说一分钟更新一次,那对于数据库操作太频繁了,希望大家帮忙想个好的思路

解决方案 »

  1.   

    详细说一下:这个定时执行的表c 的数据来源:a、b表   每天执行从零点开始每隔一个小时从a和b表中提取时间段为当天也就是 比如现在时间是5点。我就去查a表和b表从当天零点到5点的数据。a表和b表的数据都是实时每个时间段都在变化,所以C表的数据也要不断的去重新提取a表和b表的数据 ,考虑到都是每个小时根据时间和需要的字段去update这个c表的数据,但是每次都要从a表和b表中 根据时间段去查询数据 虽然已经创建索引,但是还是会影响数据频繁的操作。注:是sql2005所以希望有更优化的处理方式。就是怕如果过多对数据库频繁的查询造成影响,
      

  2.   

    你现在的处理模式比如是:0点~5点;那么可不可以通过调整,将处理模式变为 0点~1点,1点~2点,...,4点~5点?这就是所谓增量模式,哪怕这中增量模式会导致你需要 a+b --> tmp,然后 tmp --> c如果能实现这样,就可以进一步缩小处理时间间隔,比如5分钟一次,因为增量的代价恒定、可控。
      

  3.   

    汗,你这个系统,连历史数据都随时发生变动的啊?这系统设计的比较诡异,我还以为你的a、b表是流水帐之类的数据。那么就是说,考虑设计一种机制,实时记录变动情况,比如说:
    ◎ 在a表上增加一个触发器,每当有新增或变更数据进入,就自动在某个BatchLog表中记录:待处理数据,ID=xxoo,变更额度;
    ◎ 批处理程序只根据BatchLog表中的记录进行处理,有新记录就将其汇算到c表上。注:如果ab表的更新频度是海量更新的话,这种模式不行。