HANA SDA/虚拟表-对ORACLE DB使用并行化

2020-08-25 12:46发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们有以下设置:

我们在ORACLE表中存储了大量数据。 我们通过使用SAP HANA中的虚拟表查询所需的信息。 较大的SELECT最多需要两个小时,因此我们需要减少此时间。 ORACLE服务器有许多未使用的资源。 当我们通过PARALLEL EXECUTION一次查询十个不同的表时,总时间仅比十个表中最大的一个表所需的时间短。

不可能更改ORACLE服务器的配置,因此不能选择"智能数据集成"。 此外,表内容会一次更改整个表,因此增量将始终包含所有内容。

问题是,当我们只需要其中一个大表的信息时,我们在双方上都浪费了很多时间。 ORACLE服务器可以更快地处理请求,HANA由于缺少要处理的数据而处于空闲状态。 我们尝试了以下方法:

  1. 在SELECT语句中使用过滤器,并在并行执行中多次查询ORACLE表:
    由于无法多次在同一表中并行写入,因此失败。
  2. 使用ORACLE提示 SELECT/* PARALLEL(n)*/* FROM表名:
    在将该语句发送到ORACLE服务器之前,该注释似乎已被丢弃。
  3. 使用多个负载表绕过方法1的限制,然后在目标表中合并数据。
    是的,这是一种解决方法。 但是您在联合上浪费了很多时间,无法使用临时表,因此我们将不得不添加数十个表定义。

还有其他方法可以控制HANA方面的程度或并行性吗?

预先感谢您的想法,

最大

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们有以下设置:

我们在ORACLE表中存储了大量数据。 我们通过使用SAP HANA中的虚拟表查询所需的信息。 较大的SELECT最多需要两个小时,因此我们需要减少此时间。 ORACLE服务器有许多未使用的资源。 当我们通过PARALLEL EXECUTION一次查询十个不同的表时,总时间仅比十个表中最大的一个表所需的时间短。

不可能更改ORACLE服务器的配置,因此不能选择"智能数据集成"。 此外,表内容会一次更改整个表,因此增量将始终包含所有内容。

问题是,当我们只需要其中一个大表的信息时,我们在双方上都浪费了很多时间。 ORACLE服务器可以更快地处理请求,HANA由于缺少要处理的数据而处于空闲状态。 我们尝试了以下方法:

  1. 在SELECT语句中使用过滤器,并在并行执行中多次查询ORACLE表:
    由于无法多次在同一表中并行写入,因此失败。
  2. 使用ORACLE提示 SELECT/* PARALLEL(n)*/* FROM表名:
    在将该语句发送到ORACLE服务器之前,该注释似乎已被丢弃。
  3. 使用多个负载表绕过方法1的限制,然后在目标表中合并数据。
    是的,这是一种解决方法。 但是您在联合上浪费了很多时间,无法使用临时表,因此我们将不得不添加数十个表定义。

还有其他方法可以控制HANA方面的程度或并行性吗?

预先感谢您的想法,

最大

付费偷看设置
发送
2条回答
95年老男孩
1楼-- · 2020-08-25 13:21

使用SDA,您可以在系统之间建立单个连接。 HANA会尽其所能快速返回数据,但它仍然只是与Oracle的1个客户端连接。

当然,您可以使用SDI将数据复制到HANA中,而完全避免远程查询 。

如果不可能,则可以结合使用SDA和SDI。 您具有远程对象的SDA定义,请保持不变。 使用SDI创建一个利用SDI并行性质的对象。

SDI中的任务分区

""要提高大型源对象的性能,请考虑 使用任务分区选项。 分割 允许SAP HANA读取 ,处理和提交

让SDI指向SDA对象,而不是本机Oracle连接。沿着对数据和表布局有意义的线配置分区。然后 使用SDI接口通过SQL获取数据。

当HANA看到带有分区的SDI容器时,它将尝试为定义中的每个分区打开一个新连接,从而为您提供并行执行

Mark

一只江湖小虾
2楼-- · 2020-08-25 13:28

我感到很痛苦。

在这种情况下使用并行性的最简单方法是在Oracle上创建视图 使用并行提示的服务器,并通过SDA读取这些提示。

一周热门 更多>