如何处理对同一表的并发更新

问题描述 投票:1回答:1

我有ASP.NET WebAPI应用程序,客户端可以在其中执行更新。因此,当多个/并发请求到达应用服务器时,它会被负载均衡器划分。所以我有两个应用服务器,在它们前面有负载均衡器,所以负载是分开的。但是在后端,我们有不可扩展的内部SQL Server。因此,如果API同时获得多个请求,则很少有请求更新失败的原因是SQL Server超时。当我检查sp哪个超时时,SP根据发送的参数和一些配置的表生成动态查询。

另外,当我尝试在选择时间使用简单的update语句更新表时,也会遇到此问题。这里的表一次由多个应用程序更新。

我不确定解决问题的最佳策略是什么。

我应该使用RabbitMQ来最大程度地减少数据库负载。但是RabbitMQ可能会延迟更新,因为我的业务流程之一需要实时更新然后执行某些操作。

有人可以指导我处理这种情况。

c# sql .net rabbitmq
1个回答
0
投票

为多个用户提供更新服务时最重要的考虑因素:始终使用TRANSACTION来更新数据库。确保事务包含更新所有需要的表所需的所有SQL,并在发出COMMIT时一次执行。

参考https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-transaction-transact-sql?view=sql-server-ver15

© www.soinside.com 2019 - 2024. All rights reserved.