UNION上的SAP HANA OOM错误

问题描述 投票:1回答:1

我有一个有2800万条记录的表,这些记录在联合(在HANA 2 SP2上的图形计算视图中)上有一个返回5000条记录的视图进入内存转储。我已经尝试了一个SQL联盟,它仍然无法正常工作。联合视图中没有逻辑。

表中的select top 1000返回<1s的数据,带有5k记录的视图返回2s的数据。当我将这两个没有逻辑联合起来时 - 即使在将聚合节点切换到投影之后,它仍然会耗尽内存。我在这里错过了什么?

事务由内部错误回滚:分配失败; $ $大小= 2048; $名称$ = SearchAlloc; $类型$ =池; $ inuse_count $ = 11184979; $ allocated_size $ = 20190632592; $对准$ = 16

sap hana
1个回答
0
投票

特别是“联盟”,但也“联合所有”可以消耗大量内存,例如在内部使用早期实现时。几天前我遇到过一个案例,其中“union all”消耗了130GB的临时内存。将union all分成两个语句后,最大内存消耗降至11gb!如果您的应用程序允许,请尝试此方法。遵循Lars建议并比较union all和union语句的planviz。

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

19 ....“Avgoid UNION ALL,UNION,INTERSECT,EXCEPT

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

像往常一样,这一切都取决于你的用例等。

© www.soinside.com 2019 - 2024. All rights reserved.