在SQL 2005中进行跨数据库调用是否有任何性能影响?

时间:2009-02-23 23:54:07

标签: sql-server-2005

在SQL 2005中进行跨数据库调用是否有任何性能影响?换句话说,如果存储过程和函数在数据所在的同一数据库中运行,性能会更好吗?

4 个答案:

答案 0 :(得分:3)

如果数据库驻留在相同的服务器实例中,则不是这样。如果它们驻留在不同的服务器实例中,则需要转移请求和数据的成本。所以我猜答案是肯定的,让性能在同一个数据库中运行会更好。

答案 1 :(得分:3)

没有性能影响,但可能会有灾难恢复的影响。例如,如果您正在进行数据库镜像,则可能会在另一个数据库故障转移之前将一个数据库故障转移到DR数据中心。如果它们被设计为在与其自己不同的数据库中执行,并且该数据库已经故障转移,那么您的查询将会失败。为了简单起见,您可能希望在正确的数据库中运行它们以防止出现这类问题 - 考虑一下从您离开后多年以及其他人必须维护应用程序时会发生什么。

其次,有一个表现报告的含义。当您执行数据库的配置文件/跟踪时,您可能会尝试根据数据库筛选活动。如果查询来自不同的数据库,除非从两个数据库中捕获活动,否则不会捕获这些数据库。

答案 2 :(得分:1)

回答您的具体问题,是的,代码在与表格相同的数据库中更好。

  • Ownership chaining(表格的代码)
  • Cross db ownership chaining问题
  • 管理安全性。您的服务器级别登录映射到数据库级别用户。这需要两次maitianed
  • BCP问题(版本冲突,数据不匹配等)

没有性能开销(相同的服务器),但存在巨大的维护问题。

为什么你会想到这个设计?

答案 3 :(得分:0)

GBN,

包含数据的数据库来自第三方MS Enterprise Server应用程序。我们不想在此数据库中放置自定义SQL。我们选择创建一个自定义数据库,在需要时进行跨数据库查询。