我使用SQL Server 2008企业版。 而我使用的链接服务器技术,另一个SQL Server 2008 Enterprise实例从另一台服务器连接。 我写TSQL操纵从两个服务器实例对象(如表)。
我的问题是,对链接的服务器,有一个大的性能问题? 如果是,什么是关键的性能瓶颈和最佳实践,我们应该遵循?
在此先感谢,乔治
我使用SQL Server 2008企业版。 而我使用的链接服务器技术,另一个SQL Server 2008 Enterprise实例从另一台服务器连接。 我写TSQL操纵从两个服务器实例对象(如表)。
我的问题是,对链接的服务器,有一个大的性能问题? 如果是,什么是关键的性能瓶颈和最佳实践,我们应该遵循?
在此先感谢,乔治
我的问题是,对链接的服务器,有一个大的性能问题? 如果是,什么是关键的性能瓶颈和最佳实践,我们应该遵循?
相比呢? 对于什么疑问? 当然这一切都取决于你在做什么。 对于某些查询的性能影响可以忽略不计的其他巨大的。
有一堆,你应该记住的担忧:
在过去,我已经加入到它之前发现它在哪里幅度较快的几个命令在本地移动远程数据的情况下,并建立索引。
这取决于你在做什么。
如果您正在运行的两个服务器实例表之间的连接查询和传输大量数据,那么你有你需要知道的一个瓶颈。
如果服务器上自己的子网了1GB的链接,那么你不应该担心很多。 如果两个服务器通过一个共享的,慢速链路连接我会关注。
你要采取一些一炮而红到(链接服务器到SQL Server为您的机器)转移跨线结果的两倍。 其次,它有来解析名称和登录,这是没有太大的打击,但它是一个打不过。
无论如何,我已经找到了唯一的主要瓶颈是跳跃的服务器,因为它有两次传递的信息。
我使用链接的服务器经常在环境之间同步数据,主要是因为我发现它的代码和管理简单的解决方案。
一个提示,我发现,但可能不为别人的选择,是运行具有最多的数据或者是做的最更新/插入服务器上的任何程序。 比如我有一个从A两个表,并插入/更新如果我跑这在服务器A上,将采取多次长于上运行B.程序。如果你没有选择往哪里跑比较B.过程我们的代码,你被卡住,比如说,服务器A,那么这个建议可能不会有帮助。
另一个末端是降低返回到必要的最低限度的数据。 虽然你可能有正常返回的数据几乎立即在本地服务器上,如果链接服务器是有些距离,则延迟可能是非常痛苦的。 在只访问这些你需要的列比正常的更严格。
我发现,如果你正在做外连接(左/右)的性能下降很快。 它有时更快地选择从远程服务器中的数据到一个临时表和索引它,而不是通过网络连接。 大多数情况下,最好的策略是编写查询是有意义的,然后只调整它如果性能是一个真正的问题的方式。
@ George2,
萨姆藏红花是在这种情况下是正确的。 当一个连接在本地执行,然后SQL Server使用索引来执行联接,然后确实为列查找不纳入指数的定义。
随着链接的服务器做一个连接所有表需要从远程服务器第一,然后再加入进行转移。 这是一个瓶颈。 如果您可以预先筛选所有远程的表它们加入到本地的表,那么将大大提高性能之前(如选择与良好的过滤#TEMP表来减少行数),然后如果你需要对这个表你是执行多个操作最好创建索引的时候了。