延迟从特定数据库读取

时间:2013-05-18 12:52:09

标签: vb.net sql-server-2008-r2

我有一个用VB.NET编写的应用程序,它从SQL Server 2008 R2中读取数据。 在登录时,用户选择众多数据库文件中的一个(在下拉列表中可用),然后键入其用户名和密码进行登录。登录时,应用程序从所选数据库中的表中读取一个名为“strings”的表,并在一些25-30个变量中使用Do While循环值来创建应用程序的工作环境。

我在Do While循环的开始和结束时进行了时间跟踪,它显示对于其中一个数据库,读取所有值需要26秒,而另一个需要0秒(因为我没有跟踪)在mili-seconds级别。)

具有讽刺意味的是,数据库中需要26秒的'strings'表有125行,占用0秒的数据库有159行。显然,代码是相同的,数据库结构也是一个真正的副本(两个数据库都是使用相同的脚本生成的。)

我已经想到了所有可能性,但不确定为什么存在如此巨大的差异会延迟用户的登录时间。

请你详细说明如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:0)

没有任何具体信息,很难找到正在发生的事情。要返回大约一百条记录不应该花费几十毫秒,简单的代码通常没有性能影响。似乎第二台服务器存在严重的性能问题。

  • 尝试从SQL Server Management Studio运行查询 服务器,检查CPU负载和慢速服务器上的可用内存。
  • 尝试检查网络性能(ping或测量文件下载 时间)。
  • 尝试直接在服务器上运行查询。

答案 1 :(得分:0)

在对两个数据库文件进行了大量研究和比较之后,我发现数据库文件(mdf)和日志文件(ldf)的“初始大小”非常不同。

快速数据库的mdf和ldf文件各超过200 MB。然而,慢速数据库分别为11 MB和16 MB。我使用Microsoft SQL Management Studio将慢速数据库文件的“初始大小”更改为与快速数据库相同的值,停止并启动SQL Server和哇!现在没有性能差异。

将此作为答案,以防有人发现它有用。