【发布时间】:2014-07-08 18:09:33
【问题描述】:
基本上我有一堆性能分析,[考虑到天真的解释]声称 70% 的时间都花在了我们的 web 应用程序在重负载下的同步上,而且主要是在数据读取器内部调用的 SNIReadSyncOverAsync 上。 (SNIReadSyncOverAsync 实际上最终位于 kernalbase.dll 上!WaitForSingleObjectEx)看看这些等待是调用者发起还是被调用者发起的将是有益的。
有没有办法在 Visual Studio 争用或并发报告中查看(解释)这一点?还是其他方式?
对于我的理解更重要的是,有没有办法在数据读取器消耗数据之前查看保存数据的传入缓冲区?
【问题讨论】:
-
也许这不是您想要的,但您知道使用SQL Profiler 可以查看sql server 实例上发生的所有请求吗?
-
是的。 :) Profiler 很棒。这个问题一半是好奇,一半是实用主义。当从 SQL 服务器接收数据时,我对缓冲区中客户端发生的情况感兴趣。从一个实用的笔记来看,我试图弄清楚应用程序是否使客户端(I/O?)缓冲区保持相对空或是否填满。如果 SQL Profiler 可以提供特定于应用程序的客户端统计信息,它可能会起作用,但我不知道是否存在此功能。如果它解决了我的问题,但出于好奇,我仍然想知道上述内容。
标签: sql .net sql-server performance concurrency