【问题标题】:Optimizing OLE DB Destination for Fast load from Oracle to SQL Server for SSIS优化 OLE DB 目标以实现从 Oracle 到 SSIS 的 SQL Server 的快速加载
【发布时间】: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


【解决方案1】:

我认为主要问题是没有将数据加载到 SQL Server 中,请检查您用于从 Oracle 中提取数据的 OLE DB 提供程序。

您可以参考很多建议:

  1. Use Attunity connectors which are the fastest one available
  2. 确保您没有使用旧的 Microsoft OLEDB Provider for Oracle(MDAC 的一部分)。 Use the Oracle Provider for OLEDB (part of ODAC) instead
  3. 如果它不起作用,try using an ODBC connection / ODBC Source to read data from Oracle

【讨论】:

  • 对于我所看到的 Attunity 仅适用于企业版的 sql server,我有专业的。我会试试ODAC,看看我有没有运气
猜你喜欢
  • 1970-01-01
  • 2018-10-26
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多