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

Pattern to access database from multiple processes

我有一个用 C# 编写的 windows 调度程序服务,它从数据库中查询一堆记录,对数据执行一组操作并将这些记录更新回数据库。我现在需要将此服务部署在多台机器上。但是,我最终会遇到的明显问题是并发性。在多台机器上运行的服务不应该获取相同的记录。有没有适合这种情况的pattern/best做法呢? 我正在使用 Oracle 11g 数据库。

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

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

  1. 您可以在 table(记录)中设置状态列,描述记录是已处理、正在处理还是未处理。
  2. 您可以在 table(记录) 中使用 rowversion/timestamp 以防其他事务更新相同的值。 (考虑 MS-SQL 服务器系列)

能知道多机服务的原因吗?如果您的答案在于性能,那么您可以使用 Task/multithreading 等来实现相同的效果。