Azure 数据工厂 - Oracle Source 糟糕的性能

Azure Data Factory - Oracle Source Terrible Performance

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

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

SELECT Col001, Col002, Col003 FROM APPS.WHATEVER_TABLE;

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

IR盒中的CPU这段时间运行在30%左右。 红外盒上的可用内存在此期间保持在 5GB 或以上。 无论 Azure SQL 数据库接收器的 DTU 级别如何,这都会执行相同的操作。今天,我在 800 DTU 和 3,000 DTU 之间进行了尝试,并获得了完全相同的性能,Azure SQL 数据库上的日志 I/O 保持在或低于 10%。

ADF Oracle 连接器的文档对此没有任何帮助,因为它没有提供任何关于如何调整连接字符串参数的指导,或者是否真的可以这样做。

想法?

分辨率:

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

情况变得如此糟糕,我们就此向 Microsoft 提出了一个案例,我们最担心的事情得到了证实。

Azure 数据工厂运行时小数类型的最大精度为 28。如果来自源的 decimal/numeric 值具有更高的精度,ADF 将首先将其转换为字符串。字符串转换代码的性能很糟糕。

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