c# - SQL Server 如何处理并发请求?

标签 c# sql-server linq-to-sql database-design networking

如果对同一个大表的多个查询同时到达 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/

相关文章:

c# - 使用文化信息将 unix 时间转换为特定的日期时间格式

c# - 在 SQL Server 中存储、检索和验证密码 (SecureString)

sql-server - 我在哪里找到 SQL Server 2008 Management Studio 中执行查询的毫秒数?

c# - 报告一百万行的最佳方法

c# - 找出 Windows Server 2008 中的电影数据速率

c# - 如何检查游戏对象是否具有特定属性?

c# - Windows 窗体标签页事件

sql-server - SSRS : How to repeat header row of a table on each page that is embedded in a LIST?

sql - 将 SQL 转换为 linq-to-sql(子查询)

linq-to-sql - ASP.net MVC 在一个 View 上显示两个表的结果