有没有办法从SQL Server查看传入的缓冲区/记录?

时间:2014-07-08 18:09:33

标签: sql .net sql-server performance concurrency

基本上我有一堆性能分析[给出了天真的插入]声称70%的时间花费在我们的Web应用程序的高负载同步上,并且主要是在数据读取器内部的SNIReadSyncOverAsync中调用。 (SNIReadSyncOverAsync实际上最终会坐在kernalbase.dll上!WaitForSingleObjectEx)查看这些等待是由调用者启动还是被调用者启动会提供信息。

有没有办法在Visual Studio争用或并发报告中查看(解释)这个?或者其他一些方式?

更重要的是,根据我的理解,是否有办法在数据读取器消耗数据之前查看保存数据的传入缓冲区?

1 个答案:

答案 0 :(得分:0)

似乎我的问题不明智。

  

datareader一次读取一条记录,但它从中读取   底层数据库驱动。数据库驱动程序从中读取数据   块中的数据库,通常使用8千字节的缓冲区。

     

如果您的结果记录很小而且您不会得到很多,那么他们就是   将全部放入缓冲区,数据库驱动程序将能够   将它们全部提供给数据读取器,而无需询问数据库   了解更多数据。

     

如果你获取的结果大于缓冲区,那么你将只是   能够读取它的第一部分以及何时不存在数据   网络缓冲区然后datareader将通知sql server下一步发送   数据块。

How much data can be stored in network buffer when datareader is used