繁体   English   中英

SSIS性能与OpenQuery以及从SQL Server到Oracle的链接服务器

[英]SSIS performance vs OpenQuery with Linked Server from SQL Server to Oracle

我们在SQL Server环境中定义了一个链接服务器(OraOLEDB.Oracle)。 Oracle 12c,SQL Server 2016.SQL Server上还安装了一个Oracle客户端(64位)。

从Oracle检索数据时(一个简单的查询,从3M行,相当窄的表中获取所有列,包含varchars,日期和整数),我们看到以下性能数字:

sqlplus:从SQL Server本身的Oracle> OS File中选择小于2k行/秒

SSMS:插入到SQL Server表中,使用OpenQuery(直通到Oracle,远程执行)从Oracle中选择小于2k行/秒

SQL导出/导入工具(实质上是SSIS):插入到SQL Server表中,使用OLEDB Oracle for source和OLEDB SQL Server,目标超过30k行/秒

寻找使用OpenQuery / OpenResultSet提高吞吐量的方法,以匹配SSIS吞吐量。 可能有一些缓冲区/标志允许实现相同的?

请指教...

谢谢!

--Alex

我认为有很多方法可以增强INSERT查询的性能,我建议阅读以下文章以获取有关数据加载性能的更多信息。

您可以尝试一种方法,即使用聚簇索引最小化日志记录。 请查看以下链接以获取更多信息:

可能有一些缓冲区/标志允许实现相同的?

可能正在寻找FetchSize参数

FetchSize - 指定提供程序一次提取的行数(获取数组)。 必须根据数据大小和网络的响应时间进行设置。 如果该值设置得太高,则可能导致在执行查询期间有更多的等待时间。 如果该值设置得太低,那么这可能会导致更多往返数据库。 有效值为1到429,496和296.默认值为100。

例如

exec sp_addlinkedserver N'MyOracle', 'Oracle', 'ORAOLEDB.Oracle', N'//172.16.8.119/xe', N'FetchSize=2000', ''

请参阅https://blogs.msdn.microsoft.com/dbrowne/2013/10/02/creating-a-linked-server-for-oracle-in-64bit-sql-server/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM