我正在使用SQL Server数据库和大约50个与数据库通信的客户端处理系统。
在数据库中,有两个表,第一个(orders
)有~1,300万行,第二个(products
)有大约300万行。表由外键连接(一对多关系)。
有超过50个客户端连接到数据库,这些客户端在不相互了解的情况下进行选择和更新。另外,我有一个客户端通过TCP接收新数据(订单和产品)并将其添加到数据库中(删除旧的,插入新的)。这个TCP客户端每分钟增加大约50个新订单。
每个客户端都有自己的数据库连接。为每个操作建立连接:
一开始,这些与数据库的多连接没有问题,但现在,由于有很多客户端,有时会出现死锁。
要解决此问题,我计划使用Entity Framework编写一个WCF服务,该服务将能够连接到数据库。所有客户端都将通过WCF服务执行数据库操作。
在Web服务中处理多数据库连接的最佳做法是什么?我应该如何防止发生死锁?