gpt4 book ai didi

sql - SSIS 性能与带有从 SQL Server 到 Oracle 的链接服务器的 OpenQuery 的比较

转载 作者:行者123 更新时间:2023-12-03 03:37:06 24 4
gpt4 key购买 nike

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

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

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

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

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

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

请指教...

谢谢!

--亚历克斯

最佳答案

There is probably some buffer/flag somewhere that allows to achieve the same?

可能正在寻找 FetchSize参数

FetchSize - specifies the number of rows the provider will fetch at a time (fetch array). It must be set on the basis of data size and the response time of the network. If the value is set too high, then this could result in more wait time during the execution of the query. If the value is set too low, then this could result in many more round trips to the database. Valid values are 1 to 429,496, and 296. The default is 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/

关于sql - SSIS 性能与带有从 SQL Server 到 Oracle 的链接服务器的 OpenQuery 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55404990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com