轮询的性能改善

xiaowen_ly 2009-07-21 11:03:24
问题:服务器后台每一分钟查询数据库表一次,查出创建超过30分钟但是还没处理的记录,然后把该记录的信息发送邮件/短信给需要处理的人,提醒他及时处理该记录。但是这个每分查询一次消耗太多的服务器资源和数据库资源,请教各位,有没有好的处理方案,性能好还能达到这样的目的?
...全文
372 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjybushiren88888 2009-07-21
  • 打赏
  • 举报
回复
关注
cpp2017 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiaowen_ly 的回复:]
引用 6 楼 sp1234 的回复:
如果“但是这个每分查询一次消耗太多的服务器资源和数据库资源”,那么是你索引和线程方面的设计问题,跟轮询没有关系。

我的意思是:单子很多,而且分不同的类型和内容,每分钟查询一次,要查询的东西很多,需要服务器资源。而且每分钟一次,肯定会消耗资源。
我想请教大家在设计上有没有好的思路,达到目的还有好的性能。我用的服务器不是很好。
[/Quote]
查询的时候只查一个表,
不同的来源都往这个表里写。
xiaowen_ly 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sp1234 的回复:]
如果“但是这个每分查询一次消耗太多的服务器资源和数据库资源”,那么是你索引和线程方面的设计问题,跟轮询没有关系。
[/Quote]
我的意思是:单子很多,而且分不同的类型和内容,每分钟查询一次,要查询的东西很多,需要服务器资源。而且每分钟一次,肯定会消耗资源。
我想请教大家在设计上有没有好的思路,达到目的还有好的性能。我用的服务器不是很好。
  • 打赏
  • 举报
回复
如果“但是这个每分查询一次消耗太多的服务器资源和数据库资源”,那么是你索引和线程方面的设计问题,跟轮询没有关系。
xiaowen_ly 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cpp2017 的回复:]
像这种即时通知的一般有两种模式,消息通知,轮询,
现在看来消息通知应该不现实,因为你是30分钟后才通知,没有事件触发,所以只能轮询。
至于效率,你可将需要轮询的表与事件相关的表分开,尽可能少的字段和记录(用完的记录即时清除或移走)
这个表只做轮询用,关键数据冗余都可。
[/Quote]
我也是考虑如此,临时表。
但是单子是有状态的,比如一张单子是制单状态,那就拿到临时表里面,但当单子被处理后,状态改变了,这时临时表就应该清除它。就是说当单子状态改变的时候都有可能影响临时表,这样的话,改动就太大了,因为有很多单子,每张单子的操作都影响到临时表的状态,需要在每张单子操作之后进行判断,然后改变临时表的状态,改动实在太大。大伙有什么好的提议吗?谢谢啦
Pig23 2009-07-21
  • 打赏
  • 举报
回复
呵呵,我也有这种问题,不过情况比lz好,一天轮询一次即可,并且放在凌晨

这种确实没什么好方法,像1#那样,尽量只保留表关键字段,可以提升些许性能,不过还要根据你的数据量,一旦数据量很大的话……
haonanxxx 2009-07-21
  • 打赏
  • 举报
回复
我也遇到了,还不知道如何下手。
designonline 2009-07-21
  • 打赏
  • 举报
回复
我也遇到这种需求。那位帮忙解答一下

我是采用临时表的方式来做
cpp2017 2009-07-21
  • 打赏
  • 举报
回复
像这种即时通知的一般有两种模式,消息通知,轮询,
现在看来消息通知应该不现实,因为你是30分钟后才通知,没有事件触发,所以只能轮询。
至于效率,你可将需要轮询的表与事件相关的表分开,尽可能少的字段和记录(用完的记录即时清除或移走)
这个表只做轮询用,关键数据冗余都可。
xiaowen_ly 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cpp2017 的回复:]

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

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

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧