SQL Server 中的跨数据库查询是否昂贵?

Jon*_*len 16 sql-server

SQL Server 中的跨数据库查询是否昂贵?所有数据库都在同一个实例中。

Lee*_*DBA 6

对不起,我没有足够的声誉来评论这个问题,但根据我的经验,如果客户端应用程序为使用跨数据库连接的查询提出事务,那么它会促进事务分布式并具有 DTC 事务的开销.

这种情况下的 DTC 开销可以被视为对性能的负面影响。尽管 Microsoft 将 DTC 事务描述为这样,但通常差异可以忽略不计:

分布式事务通常会消耗大量系统资源

交易推广

...如果您的服务器无法提供所需的资源,则表明性能会下降。

只是为了澄清,上面的文章描述了在引入远程系统时提升本地事务,但我已经看到当使用跨数据库查询时,同一服务器上的事务会出现这种情况。

正如 Thomas Stringer 在他的评论中指出的那样,身份验证会有额外的开销,尽管我认为因为这将是 SID 驱动的,除非您必须使用单独的凭据来访问其他数据库,否则那里的开销将很小。

如果数据库设置存在差异,导致连接中的额外开销可能比之前的建议影响更大 - 例如数据库整理。数据库整理可能表现为功能差异,而不仅仅是性能差异。

我认为 Aaron 对性能有最有力的论据,优化器没有使用跨数据库查询的关系的优势,而在数据库中自包含你可以使用关系来获得优势。


sta*_*ray -1

在 SQL Server 2014 中,内存优化表不支持跨数据库事务。您无法从也访问内存优化表的同一事务或同一查询访问另一个数据库。您无法轻松地将数据从一个数据库中的表复制到另一个数据库中的内存优化表。http://msdn.microsoft.com/en-us/library/dn584627(v=sql.120).aspx数据库镜像/AOAG 不支持分布式和跨数据库事务。http://technet.microsoft.com/en-us/library/hh393530.aspx。如果您打算使用所有权链,请注意安全风险http://msdn.microsoft.com/en-us/library/ms188676.aspx