我使用的.Net 2.0 + SQL Server 2005企业+ VSTS 2008 + C#+ ADO.Net开发ASP.Net Web应用程序。
我的问题是,如果我使用Asynchronous Processing=true
与SQL Server身份验证模式(而不是Windows身份验证模式,即使用sa帐户,并在web.config中的连接字符串密码),我想知道是否Asynchronous Processing=true
将影响业绩我的web应用程序(或取决于我的ADO.Net代码实现模式/场景)? 为什么?
只要具有Asynchronous Processing=True
在连接字符串中仅仅只是使您能够编写异步查询-我看不出有你的连接字符串中设置应该不会影响你的表现,如果你不改变任何东西。
你会希望开始看到你的表现产生积极的影响,当你开始做你的数据库查询的异步处理。 但是,仅仅指定一个选项应该不会对您的应用程序的任何(正或负)的影响。
渣
作为事实上,也有性能问题,当您启用该选项; 看到ADO.NET 2.0异步命令执行(异步)常见问题解答 :
问:什么是新的ADO.NET 2.0异步命令执行功能。
答:ASYNC允许在一个非阻塞方式执行命令。 我们暴露在的SqlCommand以下异步方法:BeginExecuteNonQuery,BeginExecuteReader和BeginExecuteXmlReader与轮询,同步和( 颤动 )的回调。
...
问:那么,这是否意味着每一个命令我执行(同步或异步)将在重叠模式当我添加发生ASYNC = TRUE到连接字符串?
答:是的,它确实,我们执行这个连接上一切都将在重叠的方式来完成。 对于同步操作,我们在内部等待完成返回前,我们基本上都是伪造此连接上的同步行为。 这就是为什么我们需要一个连接字符串关键字的原因。
问:这是否有PERF的影响?
答: 当然,当你知道你将要使用异步功能,只能使用异步= TRUE。
...
使用.NET框架4.5开始时,异步处理属性被忽略,所以这实际上是没有必要将其列入。
引用:
在此之前的.NET Framework 4.5,与SqlClient中的异步编程是用下面的方法和异步处理=真正的连接属性来完成:
- System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery
- System.Data.SqlClient.SqlCommand.BeginExecuteReader
- System.Data.SqlClient.SqlCommand.BeginExecuteReader
此功能保持的SqlClient在.NET框架4.5。
在.NET Framework 4.5开始,这些方法不再需要异步处理=在连接字符串中实现。
欲了解更多信息,请参阅以下链接:
- SqlConnectionStringBuilder.AsynchronousProcessing物业
- 异步编程
矛盾的接受的答案说的话,它实际上对性能的影响 。
ATLEAST:根据MSDN文档 。 然而在实践中我没能看到与.net 3.5 SP1的SQL 2005 Express的情况下任何区别。
由于MSDN文档警告这个我认为这应该成为今后的参考有趣。
我刚刚测试同步数据库的性能ASYNC = TRUE和异步= FALSE调用。 我很关心的问题:
答:当然,只使用异步= TRUE,当你知道你将要使用的异步功能
我可以说,性能是完全一样的 。 我在Azure的Web角色测试的高负荷和大的请求数量计算的平均之下。
所以,如果您的应用程序使用不同类型的数据库查询(同步和异步),你可以随意设置Asynchronous Processing=true
,并使用此连接两个同步和异步查询。 它也将让您连接池小,我相信。
下面是含有类来帮助修改连接字符串,以确保它们设置异步处理的要点= TRUE: https://gist.github.com/2597691