选择几乎实时软件的查询频率

时间:2014-10-10 11:36:33

标签: c# sql database winforms

我正在构建一个类似ERP的软件,但仅限于制造和性能分析部分。我们是100人公司,最快的制造订单大约需要10分钟到2个小时。

多个工作人员有8个工作站,工程设计工作量大约10个(图表和报告)。

我们会在几分钟内将在一件作品上工作的时间存储起来。

我不确定我是否在数据库使用方面使用了最佳做法。

  • 目前,我选择每5秒获取一次更新时间,每隔5秒我用SQL Server中的代理作业一直更新。此任务并不重要,因为我们使用分钟而不是秒。

  • 有一个工作可用部分,这个部分很重要,如果一个工作需要它消失。我几乎想要它,如果有人找到工作,它就会从其他工作站上消失。根据我的理解,我需要做一个选择查询并检查一件作品是否已经消失。我可以每500毫秒设置一次检查而不会超载Sql server吗?如果差不多有20个,则表示每秒选择40个。

有没有更好的方法来完成这些任务?

3 个答案:

答案 0 :(得分:1)

  • 在你的第一点。您可以保留最后使用的DateTime,因此不是每5秒查询一次,而是只查询一次,然后实时更新客户端所花费的时间(通过当前时间的简单减法)。

  • 在你的第二点。每500毫秒查询一次SQL服务器是不可取的。您应该在工作站和SQL服务器之间实现一些通信层(例如Web服务)并保留一些数据缓存在那里,然后您可以在不查询数据库的情况下对Web服务进行查询。当然,在删除任何数据时,您需要通知该服务。

我希望这会有所帮助

答案 1 :(得分:1)

如果使用SqlServer,SqlDependency Class将大大有助于解决您的问题。此外,我将存储开始和结束时间,所花费的分钟数可以是一个计算值,以便始终保存查询数据库。

答案 2 :(得分:0)

您需要一个服务器组件。一位大师。 一个可以统治所有人的应用

让单个服务器应用程序成为了解数据库,连接到它并处理记录更改的应用程序。

在每个工作站上,您将拥有一个客户端应用程序。使用WCF促进服务器与其客户端之间的通信。服务器应该公开允许客户端进行记录更改,从数据库请求数据,请求缓存的状态等的方法。

拥有服务器层还为您提供了一个集中点,可以在此时间点缓存客户端所需的信息。

至于删除项目,例如:客户端A请求服务器从列表中删除作业#1(并且我假设从数据库中删除)。然后,服务器进行必要的数据库更改,并立即通知其客户端更改。或者,如果您更喜欢单向通信,那么服务器只需维护更改数据就很容易,并且每个客户端都可以定期轮询以找出更改的内容。