【发布时间】:2019-08-19 15:50:57
【问题描述】:
我们在 SQL Server 环境中定义了一个链接服务器 (OraOLEDB.Oracle)。 Oracle 12c,SQL Server 2016。SQL Server 上还安装了一个 Oracle 客户端(64 位)。
从 Oracle 检索数据时(一个简单的查询,从 3M 行中获取所有列,相当窄的表,包含 varchars、日期和整数),我们看到以下性能数据:
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 吞吐量的方法。某处可能有一些缓冲区/标志可以实现相同的目标?
请指教...
谢谢!
--亚历克斯
【问题讨论】:
-
由于 SSIS 使用 BULK INSERT,所以 SSIS 比 INSERT 查询快是正常的,您必须在 INSERT 期间尽量减少日志记录以提高性能。
标签: sql sql-server oracle ssis linked-server