Azure数据工厂-Oracle源代码糟糕的性能



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

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

SELECT Col001, Col002, Col003 FROM APPS.WHATEVER_TABLE;

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

在此期间,IR机箱中的CPU运行率约为30%。在此期间,IR盒上的可用内存保持在5GB或5GB以上。无论Azure SQL数据库接收器的DTU级别如何,这都会执行相同的操作。今天,我在800 DTU和3000 DTU之间尝试了这种方法,并获得了完全相同的性能,Azure SQL数据库上的日志I/O保持在10%或以下。

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

想法?

分辨率:

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

情况变得如此糟糕,我们就此向微软提起诉讼,我们最担心的事情得到了证实。

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

检查源是否有任何高精度的数字数据,或者是否没有明确定义模式,看看是否意外使用了字符串。

相关内容

  • 没有找到相关文章

最新更新