如何优化 SSIS 中将数据下载到服务器
How to optimize the downloading of data to the server in SSIS
美好的一天。
需要将记录从 Oracle 数据库获取到 SQL 服务器中的数据库。使用 SQL 命令执行的数据源类型 (ODBC),我根据我的要求获取所有可能的索引。这个过程运行良好,问题是它需要很长时间,我需要快点。该过程无法与查找一起执行,需要合并或合并连接,只需在特定条件下从 Oracle 加载一个 table 到 SQL。
感谢您的帮助
检查你的限制因素是什么。一般有3点要检查:
远程服务器很慢。
源数据库 运行 内存不足、读取速度或空闲 CPU。用没有 WHERE
子句或 JOIN
s 的直接 SELECT
语句代替你的查询,看看你的 SSIS 包是否 运行s 更快。
目标数据库。
您可能启用了索引,HDD 上的写入延迟很高或不够 CPU。
运行 为您的目标 INSERT
table 并查看需要多长时间。
问题可能出在中间:在 2 个服务器之间传输。网络通常是主要瓶颈。 SSIS 是否与 SQL 服务器托管在同一台服务器上?那么您在专用 SSIS 机器上有 2 个网络连接 + 可能的硬件瓶颈。
根据瓶颈有不同的解决方案。
如果您有网络容量并且在 Oracle 上每个查询的瓶颈是 1 CPU,那么您可以水平分区数据(ID 1 到 100、101 到 200 等);建立与 Oracle 的多个连接并在多个流中加载数据。流的数量比 Oracle、SSIS 或 SQL 服务器上的 CPU 数量少 1(以较小者为准)。
美好的一天。 需要将记录从 Oracle 数据库获取到 SQL 服务器中的数据库。使用 SQL 命令执行的数据源类型 (ODBC),我根据我的要求获取所有可能的索引。这个过程运行良好,问题是它需要很长时间,我需要快点。该过程无法与查找一起执行,需要合并或合并连接,只需在特定条件下从 Oracle 加载一个 table 到 SQL。
感谢您的帮助
检查你的限制因素是什么。一般有3点要检查:
远程服务器很慢。 源数据库 运行 内存不足、读取速度或空闲 CPU。用没有
WHERE
子句或JOIN
s 的直接SELECT
语句代替你的查询,看看你的 SSIS 包是否 运行s 更快。目标数据库。 您可能启用了索引,HDD 上的写入延迟很高或不够 CPU。 运行 为您的目标
INSERT
table 并查看需要多长时间。问题可能出在中间:在 2 个服务器之间传输。网络通常是主要瓶颈。 SSIS 是否与 SQL 服务器托管在同一台服务器上?那么您在专用 SSIS 机器上有 2 个网络连接 + 可能的硬件瓶颈。
根据瓶颈有不同的解决方案。
如果您有网络容量并且在 Oracle 上每个查询的瓶颈是 1 CPU,那么您可以水平分区数据(ID 1 到 100、101 到 200 等);建立与 Oracle 的多个连接并在多个流中加载数据。流的数量比 Oracle、SSIS 或 SQL 服务器上的 CPU 数量少 1(以较小者为准)。