[英]Very long request time VS2010
我在一个小型Web应用程序中,该应用程序从Visual Studio 2010中的SQLdb获取一些数据。当我尝试显示此数据时,使用一个简单的下拉列表,第一次在编译后大约需要15秒,然后在每个请求之后需要5秒。 我使用到数据库的LINQ连接和中继器来打印所有内容。 它有四列,大约有50行,所以数据不是那么多。 如果尝试尝试10行,响应时间相同,那都没关系。
我们已经在装有VS2008的另一台计算机上测试了相同的东西,时间大约是0.1秒或类似的时间。 我使用.NET 3.5并安装了所有最新更新(SP1等)。
如果查看跟踪,我会发现代码中的这些行需要花费时间:
var cust = dbContext.Customers
.Select(c => new
{
c.customerID,
c.Email
}).Take(10);
repeater.DataSource = cust;
repeater.DataBind();
有人知道可能要花点时间吗?
问候丹尼尔
我尝试了其他方法:
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandType = CommandType.Text; //default
cmd.CommandText = "SELECT Email FROM Customer";
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
它花费的时间很长..我认为必须有一些比代码调用数据库更基本的问题?
一些更多信息:我做了som跟踪,这是第一次加载页面:
Begin Raise ChangedEvents 0,00219604937555932 0,000014
After repeater has printed 15,8138335259613 15,811637
End Raise ChangedEvents 15,8138801733289 0,000047
第二次:
Begin Raise ChangedEvents 0,00219604937555932 0,000014
After repeater has printed 5,25090396258066 5,248825
End Raise ChangedEvents 25095106283536 0,000047
ChangeEvents发生了什么?
获取LINQ生成的实际SQL,将其复制粘贴到数据库管理工具中,然后查看执行计划以识别潜在的性能问题。
您可以通过使用数据上下文的Log属性来查看实际的SQL。 在控制台应用程序中,您可以执行以下操作:
dbContext.Log = Console.Out;
// ...
或者,将SQL写入文件如下:
using (var writer = new StreamWriter("sql.log")) {
dbContext.Log = writer;
// ....
}
另外,可能需要在LINQ表达式的末尾添加ToList()
或ToArray()
,以确保不会无意地重新执行它。
我不知道我是如何使它工作的..只是继续在代码中的其他地方做事,并更新了最新的Windows Update ..嗯..现在它像一个魅力,一定是VS2010中的错误吗? 虽然感谢所有建议,但还是学到了一些好东西!
问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.