如果对同一个大表的多个查询同时到达 SQL Server,SQL Server 如何解决这种情况下的冲突?
当在 WPF 应用程序中使用 LINQ to SQL 查询以在许多 PC 上安装时,在网络中与 SQL Server 数据库一起工作时,我应该以某种方式实现解决此类问题的机制,还是应该通过 SQL Server 和 LINQ to 保护我免受此类问题的影响SQL?
(我不是指对同一条记录的并发操作,它通过使用 TIMESTAMP 字段来解决。我的意思是一些队列问题,当从多个网络站点查询同一个大表时)
最佳答案
如果您的查询导致死锁,SQL Server 有一个内部机制来处理它。
如果它检测到死锁情况,它会选择一个“受害者”事务进行回滚。它选择受害者的方式首先是基于事务的优先级设置,然后是回滚每个查询的总成本。回滚成本较低的通常是受害者。
您实际上可以使用 SET DEADLOCK_PRIORITY
来控制优先级(LOW、MEDIUM 或 HIGH,或者 -10 到 10 之间的数字)。不过,如果您发现自己处于这种情况,那么您真的应该首先努力减少死锁。
关于c# - SQL Server 如何处理并发请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165024/