【问题标题】:Why database connection caused to loads data very slow为什么数据库连接导致加载数据非常慢
【发布时间】:2011-08-01 07:55:29
【问题描述】:
这是我的连接字符串:
<add name="ConnectionString" connectionString="Data Source=server;Initial Catalog=databaseName;Persist Security Info=True;User ID=username;Password=password" providerName="System.Data.SqlClient" />
当我从上面的 IP 地址运行时,我的 Web 应用程序运行良好,但在其他机器上运行速度很慢。
我的意思是它很慢,但它有效。我认为连接字符串的类型存在问题,因为另一个使用 OleDb 的应用程序运行良好。我该如何解决?我不想更改我的应用程序代码。
【问题讨论】:
标签:
.net
asp.net
database-connection
connection-string
【解决方案1】:
该连接字符串根本没有问题。这留下了两种可能的情况:
- 两台机器具有不同的网络拓扑 - 可能其中一台在地理上相距遥远,通过慢速链路上的 VPN 隧道进行路由(制作一个荒谬的夸张示例,仅用于说明)
- 也许一个应用程序在数据访问方面是明智的,而另一个则不是
我想第二种情况更有可能。如果您的应用程序代码没有在适当的位置进行过滤(即加载整个表以选择内存中的单行),那么是的:它会很差。
我不想更改我的应用程序代码。
如果我上面的猜测(第二条)是正确的,那么性能不佳完全是应用程序代码的错,唯一的解决办法就是更改应用程序代码; “想要”与它几乎没有关系。如果您可以显示一些显然会有所帮助的示例数据库访问代码,但请放心:ADO.NET 不会导致固有缓慢。但是,写得不好的数据访问应用程序代码将总是会导致性能不佳。
如果问题实际上是网络拓扑,那么您必须为此设计;当数据库和应用程序距离较远时,为快速本地连接而设计的应用程序往往表现不佳。唯一的解决办法是再次将您的应用程序代码更改为不那么冗长 - 并希望减少受延迟(大量小查询)和带宽(大查询)问题的影响。
【解决方案2】:
最近是否对您的 dns 进行了更改?
尝试以下两种更改之一
-
将数据源更改为IP地址:
- 命令外壳:ping(服务器名称)——这将为您提供服务器的 IP
-
将服务器名称更改为完全限定的我,包括域名
- 而不是“服务器名”,将其设置为“服务器名.mydomain.com”