在DotNet的ExecuteNonQuery()中是否有异步会影响MSSQL数据库性能吗?

时间:2016-02-04 16:52:20

标签: sql-server executenonquery

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

我的理解是,当遇到阻塞和非阻塞调用时,使用async和async只会影响应用程序(Window Service)。

当发出删除命令时,我的CPU使用率很高,在SQL Server Profiliing中,它显示了一个简单的删除命令的CPU为178。应用于SQL Query时,数据库索引看起来没问题。

所以,我想知道如果我将源代码从foo.ExecuteNonQuery()切换到等待foo.ExecuteNonQueryAsync(),将会有多少SQL-Server性能提升?它是否会对SQL Server产生影响?

非常感谢您的知识和意见。

1 个答案:

答案 0 :(得分:2)

  

如果我从foo.ExecuteNonQuery()切换[...]以等待foo.ExecuteNonQueryAsync()

,将会有多少性能提升

无论如何。执行查询的本地客户端线程不会阻止ExecuteNonQueryAsync,这就是全部。 SQL Server将执行相同的查询。

您应该做的是分析为什么您的查询在SQL Server Management Studio中执行它所花费的时间,包括实际执行计划,并分析为什么它花了这么长时间。

也许您的服务器非常繁忙,这也是可能的。或者由于并发事务而导致阻塞。分析这个的好工具是Adam Machanic的工具sp_whoisactive如何在循环中使用sp_whoisactive记录活动