【发布时间】:2010-11-20 04:39:40
【问题描述】:
这个问题是previous asked question的后续问题。
我写了一个看起来像这样的简单程序。
string s;
do
{
using (SqlConnection conn = new SqlConnection("POOLEDCONN"))
{
using (SqlCommand cmd = new SqlCommand("", conn))
{
s = (string) cmd.ExecuteScalar();
Code2IncrementPerfomanceCounter
}
}
} while (!string.IsNullOrEmpty(s))
查询返回一个字符串(nvarchar(max),当前最大大小为 9k),SQL Server 和 .NET 之间有很多延迟。 SQL Profiler 说查询的持续时间为 0 毫秒,所以我认为它不是数据库。网络在不到 1 毫秒的时间内做出响应,所以它不应该是网络。
如果我在我们的测试服务器(VMWare,SQL 未虚拟化)上运行此代码,则每秒最多会有 600 个循环。该应用程序消耗的 CPU 不超过 5%。为什么不去 快点?我必须使用流式传输从 SQL 或其他方式获取数据吗?
提前感谢
【问题讨论】:
-
你是如何确定这个延迟的?
-
那么,抱歉,他们报告了什么?每秒 600 次是不是很慢?显然,您发布的代码没有实际的 SQL;你的 SQL 是什么?您如何测试它在 SQL 中快速运行?两种环境中的数据库是否相同?
-
SQLServer 分析器不断说我的存储过程以 0 毫秒的持续时间执行。如果我执行此应用程序两次,则 600 p/s 会增长到 1200 p/s。所以我认为 SQL-server 不应该是问题 ;-)
-
等等,我注意到您已经编辑了您的帖子以考虑“增加性能计数器的代码”。那个代码是什么?
-
有趣。所以我显然是在暗示这可能是你的速度问题的原因。
标签: .net sql-server latency