SQL Server与.NET异步处理中的异步处理

前端之家收集整理的这篇文章主要介绍了SQL Server与.NET异步处理中的异步处理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql Server中使用异步处理而不是.NET异步处理有什么优势?他们不一样吗?我很难理解在sql Server中使用异步处理而不是.NET APM的好处是什么.我可以轻松地在lambda表达式中包装sql调用并执行BeginInvoke(…).

有人可以帮助我两者的区别和好处吗?

解决方法

.NET异步处理(BeginInvoke(…))的问题在于,所有这一切都是通过分离线程来同步处理代码. 5分钟的查询将占用一个线程5分钟,阻塞(即在99%的时间内什么都不做),而在远端计算结果.在压力下(一次多次查询),这将耗尽线程池,将所有线程捆绑在阻塞状态.线程池将变得无响应,并且新的工作请求将遭受等待线程池启动额外线程的大延迟.这不是线程池的预期用途,因为它的设计期望它要求完成的任务是短暂的和非阻塞的.

使用Begin / EndAction APM对,可以以非阻塞方式调用相同的操作,并且只有当结果通过IO完成端口返回时才将其排队为线程池中的工作项.在过渡期间,你的所有线程都没有被捆绑,并且在处理排队响应时,数据可用意味着用户代码不会阻塞IO,并且可以快速完成…更有效地使用线程池可以扩展到更多的客户端请求,而不需要每个未完成操作的线程成本.

原文链接:https://www.f2er.com/mssql/84084.html

猜你在找的MsSQL相关文章