Geo*_*ge2 13 .net c# asp.net ado.net sql-server-2005
我正在使用.Net 2.0 + SQL Server 2005 Enterprise + VSTS 2008 + C#+ ADO.Net来开发ASP.Net Web应用程序.
我的问题是,如果我使用Asynchronous Processing=trueSQL Server身份验证模式(不是Windows身份验证模式,即在web.config中的连接字符串中使用sa帐户和密码),我想知道是否Asynchronous Processing=true会影响我的Web应用程序的性能(或取决于我的ADO.Net代码实现模式/场景)?为什么?
小智 27
事实上,启用该选项时会出现性能问题; 请参阅ADO.NET 2.0异步命令执行(ASYNC)常见问题解答:
问:什么是新的ADO.NET 2.0异步命令执行功能.
答:ASYNC允许您以非阻塞方式执行命令.我们在SqlCommand中公开了以下异步方法:BeginExecuteNonQuery,BeginExecuteReader和BeginExecuteXmlReader,带有轮询,同步和(颤抖)回调.问:这是否意味着当我向连接字符串添加ASYNC = TRUE时,我执行的每个命令(同步或异步)都将以重叠模式发生?
答:是的,我们在此连接上执行的所有操作都将以重叠模式完成.对于同步操作,我们在返回之前在内部等待完成,我们基本上伪造了此连接上的同步行为.这就是我们需要连接字符串关键字的原因.问:这是否会产生影响?
答:当然,只有当您知道要使用异步功能时才使用ASYNC = TRUE.
tug*_*erk 24
从.NET Framework 4.5开始,忽略异步处理属性,因此不必包含它.
引用:
在.NET Framework 4.5之前,使用以下方法和Asynchronous Processing = true连接属性完成了对SqlClient的异步编程:
- System.Data.SqlClient.SqlCommand.BeginExecuteNonQuery
- System.Data.SqlClient.SqlCommand.BeginExecuteReader
- System.Data.SqlClient.SqlCommand.BeginExecuteReader
此功能保留在.NET Framework 4.5中的SqlClient中.
从.NET Framework 4.5开始,这些方法不再需要在连接字符串中使用Asynchronous Processing = true.
有关更多信息,请参阅以下链接:
只是让Asynchronous Processing=True你的连接字符串只是简单地让你编写异步查询 - 我不知道你的连接字符串中的设置如何影响你的性能,如果你不改变其他任何东西.
当您开始对数据库查询进行异步处理时,您将有希望开始看到对性能的积极影响.但只是指定一个选项不应对您的应用产生任何(正面或负面)影响.
渣
小智 5
我刚刚测试了使用 ASYNC=TRUE 和 ASYNC=FALSE的同步数据库调用的性能。我担心的是:
答:当然,只有当您知道要使用异步功能时才使用 ASYNC=TRUE
可以说性能是一模一样的。我在高负载下的 Azure Web 角色中进行了测试,并计算了大量请求的平均值。
因此,如果您的应用程序使用不同类型的数据库查询(同步和异步),您可以自由设置Asynchronous Processing=true并使用此连接进行同步和异步查询。我相信,它还会使您的连接池变得更小。
| 归档时间: |
|
| 查看次数: |
26846 次 |
| 最近记录: |