SSIS 与 T-SQL 连接性能,同一服务器上的差异数据库

1 performance sql-server ssis sql-server-2016 performance-tuning

我们正在研究 SSIS Lookup 和 T-SQL Join 之间的性能差异。我们要连接两个表;表位于同一个 SQL 服务器实例中,不同的数据库中。

我怀疑对于小表连接,差异很小或可以忽略不计。在这种情况下,我们的团队更喜欢 T-SQL,它比编写图表更容易编码/脚本。此外,在 DevOps 角度,我们可以在 DB 项目中编译/构建脚本;不幸的是,SSIS 不会正确编译 T-SQL,我可以在 SSIS 执行 SQL 语句中编写“testabcd”,并且该项目仍将构建/编译。

但是,对于需要更长时间处理的大量行,什么更快?具有索引和统计信息的 T-SQL 或全部在内存中进行的 SSIS?

我以不同的观点阅读了这些文章,团队正在努力达成共识。

https://derekdb.wordpress.com/2012/03/13/ssis-lookup-or-t-sql-join/ http://www.sqlservercentral.com/blogs/jamesserra/2011/08/29/when- to-use-t_2D00_sql-or-ssis-for-etl/

让我们假设,T-SQL 引擎和 SSIS 提供相同的硬件:CPU 和内存。鉴于相同的规格,我想从内部算法的角度了解性能速度。

Dav*_*oft 7

鉴于相同的规格,想知道性能

如果您的数据位于单个 SQL Server 实例上,则 TSQL 联接应始终比 SSIS 查找快。这不是很接近。TSQL 查询将利用索引和统计信息以及基于成本的查询优化器。连接将在 SQL Server 实例内执行,在那里它不仅效率更高,而且比 SSIS 管道拥有更多的内存和磁盘资源。

SSIS 查找主要用于目标端查找、异构数据场景以及没有查询处理引擎的源(如平面文件)。

此外,当您的数据源是单个 SQL Server 实例,而您的目标是单个(可能不同的)SQL Server 实例时,我个人几乎不会使用任何SSIS 数据流转换。而是始终使用源系统 SQL 进行提取端转换,并使用 stage-and-merge 进行目标端转换。

  • 很难说,但很多时候尝试从 SQL Server 中“卸载”工作的成本并没有降低,因为您需要在客户端获取更多数据,并且读取大量行并将它们发送到客户端并不是免费的。 (4认同)