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

sql Server中使用异步处理而不是.NET异步处理有什么优势?他们不一样吗?我很难理解在sql Server中使用异步处理而不是.NET APM的好处是什么.我可以轻松地在lambda表达式中包装sql调用并执行BeginInvoke(…).

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

解决方法

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

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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...