问题:服务器后台每一分钟查询数据库表一次,查出创建超过30分钟但是还没处理的记录,然后把该记录的信息发送邮件/短信给需要处理的人,提醒他及时处理该记录。但是这个每分查询一次消耗太多的服务器资源和数据库资源,请教各位,有没有好的处理方案,性能好还能达到这样的目的?

解决方案 »

  1.   

    像这种即时通知的一般有两种模式,消息通知,轮询,
    现在看来消息通知应该不现实,因为你是30分钟后才通知,没有事件触发,所以只能轮询。
    至于效率,你可将需要轮询的表与事件相关的表分开,尽可能少的字段和记录(用完的记录即时清除或移走)
    这个表只做轮询用,关键数据冗余都可。
      

  2.   

    我也遇到这种需求。那位帮忙解答一下我是采用临时表的方式来做
      

  3.   

    我也遇到了,还不知道如何下手。
      

  4.   

    呵呵,我也有这种问题,不过情况比lz好,一天轮询一次即可,并且放在凌晨这种确实没什么好方法,像1#那样,尽量只保留表关键字段,可以提升些许性能,不过还要根据你的数据量,一旦数据量很大的话……
      

  5.   

    我也是考虑如此,临时表。
    但是单子是有状态的,比如一张单子是制单状态,那就拿到临时表里面,但当单子被处理后,状态改变了,这时临时表就应该清除它。就是说当单子状态改变的时候都有可能影响临时表,这样的话,改动就太大了,因为有很多单子,每张单子的操作都影响到临时表的状态,需要在每张单子操作之后进行判断,然后改变临时表的状态,改动实在太大。大伙有什么好的提议吗?谢谢啦
      

  6.   

    如果“但是这个每分查询一次消耗太多的服务器资源和数据库资源”,那么是你索引和线程方面的设计问题,跟轮询没有关系。
      

  7.   

    我的意思是:单子很多,而且分不同的类型和内容,每分钟查询一次,要查询的东西很多,需要服务器资源。而且每分钟一次,肯定会消耗资源。
    我想请教大家在设计上有没有好的思路,达到目的还有好的性能。我用的服务器不是很好。
      

  8.   

    查询的时候只查一个表,
    不同的来源都往这个表里写。
      

  9.   

    临时表吧,每次逗得重新查,固定表吧,单子状态改变还得更新这个表,改动太多^