在 DotNet 的 ExecuteNonQuery() 中使用和不使用异步会影响 MSSQL 数据库性能吗?

Does with and without async in DotNet's ExecuteNonQuery() affect MSSQL database performance?

我正在查看 DotNet 框架上使用 MS-SQL 对象、ExecuteNonQuery 和 ExecuteNonQueryAsync 的源代码。

我的理解是在阻塞和非阻塞调用时使用异步和不使用异步只会影响应用程序(Window 服务)。

当发出删除命令时,我的使用率很高 CPU,在 SQL 服务器分析中,它显示 CPU 为 178 个简单的删除命令。应用于 SQL 查询时,数据库索引看起来没问题。

所以,我想知道如果我将源代码从 foo.ExecuteNonQuery() 切换到 await foo.ExecuteNonQueryAsync(),那么 SQL- 服务器性能会提高多少?它对 SQL 服务器有影响吗?

我们将不胜感激您的知识和意见。

how much [...] performance improvement will be made if I switch [...] from foo.ExecuteNonQuery() to await foo.ExecuteNonQueryAsync()

None 随便吧。您正在执行查询的本地客户端线程不会被 ExecuteNonQueryAsync 阻塞,仅此而已。 SQL 服务器将执行相同的查询。

您应该做的是通过在 SQL Server Management Studio 中执行查询(包括实际执行计划)来​​分析为什么您的查询需要这么长时间,并分析为什么它需要这么长时间。

也许您的服务器很忙,这也是有可能的。或者由于并发事务而发生阻塞。 Adam Machanic 的工具 sp_whoisactive 是一个很好的分析工具:How to Log Activity Using sp_whoisactive in a Loop