繁体   English   中英

VS2010请求时间很长

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM