【问题标题】:Azure Data Factory - Oracle Source Terrible PerformanceAzure 数据工厂 - Oracle Source 糟糕的性能
【发布时间】:2019-06-08 18:54:01
【问题描述】:

在 Azure 数据工厂中工作,使用内置的 Oracle 连接器...

给定一个非常简单的查询,例如:

SELECT Col001, Col002, Col003 FROM APPS.WHATEVER_TABLE;

这种类型的查询大约有 30 列,可以在不到 60 秒的时间内将 1,000,000 行流式传输到微型 VM 上的 Toad。从完全相同的 Oracle 服务器,在 Azure 数据工厂的自托管集成运行时中,此查询需要 8 多分钟,并且经常暂停/挂起。

在此期间,IR 盒中的 CPU 以大约 30% 的速度运行。 在此期间,IR 盒上的可用内存保持在 5GB 或以上。 无论 Azure SQL 数据库接收器的 DTU 级别如何,这都会执行相同的操作。今天我在 800 DTU 和 3,000 DTU 之间进行了尝试,得到了完全相同的性能,Azure SQL 数据库上的 Log I/O 保持在 10% 或以下。

ADF Oracle 连接器的文档在这方面根本没有帮助,因为它没有提供任何关于如何调整连接字符串参数的指导,或者实际上你是否可以这样做。

想法?

【问题讨论】:

  • 我也有类似的性能问题。你解决了吗?
  • 嗨!是的,我应该更新这个问题,但不知何故忘记了。看看我对此的回答:stackoverflow.com/questions/53000355/…,我也会更新这个。

标签: azure oracle11g azure-sql-database azure-data-factory azure-data-factory-2


【解决方案1】:

分辨率:

我们开始怀疑数据类型有问题,因为如果我们将所有高精度 Oracle NUMBER 列转换为较低精度或类似整数,问题就消失了。

事情变得如此糟糕,以至于我们向微软提起了一个关于它的案例,我们最担心的事情得到了证实。

Azure 数据工厂运行时十进制类型的最大精度为 28。如果源中的十进制/数值具有更高的精度,ADF 将首先将其转换为字符串。字符串转换代码的性能非常糟糕。

检查您的源是否有任何高精度数字数据,或者如果您没有明确定义架构,请查看您是否可能不小心使用了字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多