我可以每3秒轮询一次数据库

时间:2012-11-06 12:45:17

标签: .net sql-server architecture polling

我正在构建一个系统,在处理数据后异步发送邮件(处理时间最多可能需要10秒)。

我最初的想法是让Windows服务轮询数据库,每3秒处理一次数据处理请求,以便处理第一条记录。完成后,轮询并获取要处理的新第一条记录。

当没有记录时,等待3秒并再次轮询以检查记录。

我不确定这是不是一个好主意。在我看来,使用计时器不是编程的好方法。此外,即使不需要数据库的性能和使用也是一个问题。

在这种情况下,最佳做法是什么?

使用的技术:.net 3.5,SQL Server,服务器在农场。

2 个答案:

答案 0 :(得分:3)

这一切都取决于你创造了多少开销。

如果您可以有效地轮询数据库(即使用简单的查询),并且如果这样的轮询不需要大量网络流量(通常不需要),为什么不每3秒轮询一次?

你是如何达到3号的?它是任意的还是有理由每隔3秒精确检查一次?

为了简化查询,您可以使用2个查询:一个用于检测是否有新数据,另一个用于实际获取数据。通过这种方式,您可以优化最常出现的那个(显然是第一个)。

答案 1 :(得分:1)

为什么一次只能获得一个请求?

并考虑通知

Working with Query Notification