ExecuteReaderAsync导致sql查询需要更长时间才能完成?

Igo*_*tis 3 sql-server async-await

我有这个SQL服务器实例,由几个客户端进程共享.我希望查询尽可能少地完成.

假设一个呼叫需要从这个共享的Sql Server读取1k到10k的记录.我的自然选择是使用ExecuteReaderAsync来利用异步优势,例如重用线程.

我开始想知道async是否会带来一些开销,因为执行可能会停止并恢复每次调用ExecuteReaderAsync.这是真的,如果与使用ExecuteReader的实现相比,查询完成的总时间似乎会更长.这有任何意义吗?

usr*_*usr 6

无论使用同步还是异步来调用SQL Server,SQL Server所做的工作和ADO.NET对序列化和反序列化请求和响应所执行的CPU绑定工作没有任何区别.所以无论你选择什么,差异都会很小.

使用async不是为了节省CPU时间.它是关于节省内存(更少的线程堆栈)以及在UI应用程序中拥有一个不错的编程模型.

事实上,就我所知,async永远不会节省CPU时间.它增加了开销.如果要节省CPU时间,请使用同步方法.

在低并发工作负载中使用async的服务器上不会添加任何值.它增加了开发时间和CPU成本.