从多个进程访问数据库的模式

时间:2015-01-02 17:57:27

标签: c# design-patterns deployment windows-services

我有一个用C#编写的Windows调度程序服务,它从数据库中查询一堆记录,对数据执行一组操作并将这些记录更新回数据库。我现在需要将此服务部署在多台计算机上。但是,我最终会遇到的问题是并发性。在多台计算机上运行的服务不应该获取相同的记录。是否有符合这种情况的模式/最佳实践? 我使用的是Oracle 11g数据库。

使用多线程方法处理记录后,我们已经达到了性能方面的最大限制。为了获得更高的性能,我们考虑在多台机器上运行服务。

1 个答案:

答案 0 :(得分:0)

您需要以编程方式维护并发性。

  1. 您可以在表格(记录)中显示状态列,描述记录是已处理还是正在处理或未处理。
  2. 如果要避免其他事务更新相同的值,可以在表(记录)中使用rowversion / timestamp。 (考虑MS-SQL Server系列)
  3. 我们能知道在多台机器上提供服务的原因吗?如果您的答案取决于性能,那么您可以使用任务/多线程等来实现相同的目标。

相关问题