【问题标题】:SAP HANA OOM error on UNIONUNION 上的 SAP HANA OOM 错误
【发布时间】:2017-12-16 20:45:34
【问题描述】:

我有一个包含 2800 万条记录的表,它在联合上(在 HANA 2 SP2 上的图形计算视图上)返回 5000 条记录的视图进入内存转储。我已经尝试了一个 SQL 联合,但它仍然不起作用。联合视图中没有逻辑。

table 上的 select top 1000 在

事务因内部错误而回滚:分配失败; $大小$=2048; $name$=搜索分配; $类型$=池; $inuse_count$=11184979; $allocated_size$=20190632592; $alignment$=16

【问题讨论】:

  • 了解查询执行差异的第一步是查看两个语句的 EXPLAIN PLAN 和 PlanViz(跟踪)。我的猜测是 SELECT TOP 1000 仅应用于最终结果集,并且两个子查询/计算的 UNION ALL。在此之前,视图需要完全实现。如果是这种情况,您可以考虑在 UNION 操作之前限制数据大小。

标签: sap hana


【解决方案1】:

尤其是“union”,但“union all”也会消耗大量内存,例如当内部使用早期实现时。几天前我有一个案例,其中“联合所有”消耗了 130GB 临时内存。将联合全部拆分为两个语句后,最大内存消耗降至 11gb! 如果您的应用程序允许,请尝试此方法。按照 Lars 的建议,比较 planviz 的 union all 和 split 语句。

查看以下 SAP Note 以供参考: https://launchpad.support.sap.com/services/pdf/notes/1999997/E

19....“避免 UNION ALL, UNION, INTERSECT, EXCEPT

列引擎无法处理这些操作,因此无法进行后期实现 (SAP Note 1975448) 等优化。因此,内存需求会显着增加。因此,您应该尽可能使用替代方法(例如 OR 而不是 UNION 或 UNION ALL)...“

像往常一样,这完全取决于您的用例等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多