【发布时间】:2020-01-26 23:22:37
【问题描述】:
我正在使用 SSIS 包从 Oracle 表导入到 SQL Server 表。为此,我不得不进行数据转换。
OLE DB 源正在检索完整的表,然后通过数据转换进行转换,然后使用当前设置发送到 OLE DB 目标
现在,我要导入的表有大约 730 万条记录,有 53 列。
我需要知道如何设置(或者应该对当前设置进行哪些更改)以尽可能加快此过程。
此包将在 SQL Server 代理中作为作业计划运行。
在最后一次运行中,在 15 分钟内插入了 78k 条记录。这个速度太慢了。
我相信我必须使用“每批次的行数”和“最大插入提交大小”来调整设置,但是环顾四周,我没有找到有关哪些设置应该起作用的信息,并且我在这里尝试了不同的设置,但没有找到它们之间的实际差异。
更新:经过更多测试,延迟是从 Oracle 获取记录,而不是将它们插入 SQL 服务器。我需要检查如何改进这一点
【问题讨论】:
-
你怎么知道不是Oracle在源端提供数据慢?每行有多少数据?运行 SSIS 的机器有哪些规格?网管尺寸?这里涉及很多变量。
-
我正在使用相同的。所以会一直关注这个。我在项目中观察到的一些事情是 1)根据一天中的时间包与其他 ETL 作业一起运行,运行时间可能会有很大差异,即从 11g 到 SQL 2016 加载 6+M 行需要 50 分钟。2)取决于是否您的两个服务器都是独立的或虚拟机磨损的一部分(整个单独的蠕虫罐)。 3) 如果表有 COLUMN STORE INDEX,则在 SQL 端插入数据;插入会很慢。
-
@JacobH Oracle 是慢的很有趣,如果问题不是来自 Oracle 是慢的那将是有用的...
-
我建议您检查以下设置 [DefaultBufferMaxRows] 和 [DefaultBufferSize]
-
经过一番测试,延迟是从Oracle获取记录,而不是插入SQL服务器。我需要检查如何改进这一点
标签: sql-server oracle ssis etl