我有一个用VB.NET编写的应用程序,它从SQL Server 2008 R2中读取数据。 在登录时,用户选择众多数据库文件中的一个(在下拉列表中可用),然后键入其用户名和密码进行登录。登录时,应用程序从所选数据库中的表中读取一个名为“strings”的表,并在一些25-30个变量中使用Do While循环值来创建应用程序的工作环境。
我在Do While循环的开始和结束时进行了时间跟踪,它显示对于其中一个数据库,读取所有值需要26秒,而另一个需要0秒(因为我没有跟踪)在mili-seconds级别。)
具有讽刺意味的是,数据库中需要26秒的'strings'表有125行,占用0秒的数据库有159行。显然,代码是相同的,数据库结构也是一个真正的副本(两个数据库都是使用相同的脚本生成的。)
我已经想到了所有可能性,但不确定为什么存在如此巨大的差异会延迟用户的登录时间。
请你详细说明如何解决这个问题?
由于
答案 0 :(得分:0)
没有任何具体信息,很难找到正在发生的事情。要返回大约一百条记录不应该花费几十毫秒,简单的代码通常没有性能影响。似乎第二台服务器存在严重的性能问题。
答案 1 :(得分:0)
在对两个数据库文件进行了大量研究和比较之后,我发现数据库文件(mdf)和日志文件(ldf)的“初始大小”非常不同。
快速数据库的mdf和ldf文件各超过200 MB。然而,慢速数据库分别为11 MB和16 MB。我使用Microsoft SQL Management Studio将慢速数据库文件的“初始大小”更改为与快速数据库相同的值,停止并启动SQL Server和哇!现在没有性能差异。
将此作为答案,以防有人发现它有用。