跨数据库查询在SQL Server中是否昂贵?所有数据库都在同一实例中。
跨数据库查询在SQL Server中是否昂贵?所有数据库都在同一实例中。
Answers:
抱歉,我没有足够的声誉来评论这个问题,但是根据我的经验,如果客户端应用程序为使用跨数据库联接的查询引发事务,那么它将促进事务的分布式并产生DTC事务的开销。
在这种情况下,DTC开销可视为性能的负面影响。通常,尽管Microsoft将DTC交易描述为:
分布式事务通常会消耗大量系统资源
...如果服务器无法提供所需的资源,则可能会导致性能下降。
为了澄清起见,上面的文章描述了引入远程系统时正在促进的本地事务,但是我已经看到在使用跨数据库查询时同一服务器上的事务变得如此。
正如Thomas Stringer在其评论中指出的那样,身份验证会产生额外的开销,尽管我认为这将是SID驱动的,因此那里的开销将很小,除非您必须使用单独的凭据来访问其他数据库。
如果数据库设置存在差异,这会导致联接中的额外开销,这可能会比以前的建议产生更大的影响,例如数据库排序规则。数据库整理可以体现为功能上的差异,而不仅仅是性能上的差异。
我认为Aaron对于性能的最强论据是优化器没有利用跨数据库查询使用关系的优势,而自包含在数据库中则可以利用关系来获得优势。
在SQL Server 2014中,内存优化表不支持跨数据库事务。您不能通过同一事务或同一查询访问另一个数据库,该数据库也访问内存优化表。您无法轻松地将数据从一个数据库中的表复制到另一个数据库中的内存优化表。http://msdn.microsoft.com/zh-cn/library/dn584627(v=sql.120).aspx数据库镜像/ AOAG不支持分布式和跨数据库事务。http://technet.microsoft.com/zh-cn/library/hh393530.aspx。如果要使用所有权链接,请注意安全风险http://msdn.microsoft.com/zh-cn/library/ms188676.aspx