ModelService remove()与removeAll()

2020-09-15 14:09发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好,我需要使用cron作业从...

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

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


大家好,我需要使用cron作业从数据库中删除所有过期的价格行。
我当前正在做的是获取此类PriceRowModels的列表,并将其传递给modelService.removeAll()函数。 型号数量为1,300,000+。 这项工作进行了2个多小时,不得不中止,而计数的变化仅为4。

即 之前:1,300,004
之后:1,300,000

现在,当作业运行时,我一直在查询,并且计数完全没有变化。 我也尝试过将总数减少到83,000+,但仍然是同一问题。

知道为什么会这样吗?

此外,最好只是迭代模型列表并一次对一个模型使用remove()函数?

谢谢。

5条回答
哎,真难
2020-09-15 14:27

ModelService.removeAll()实际上只是为列表中的每个模型调用ModelService.remove()(或上次我检查过),这意味着它会为每个项目触发一个单独的SQL查询。 如果您的应用程序服务器与数据库之间的等待时间甚至是1毫秒,那么每个要删除的项目就是1毫秒EXTRA,甚至不算处理单独查询的额外开销。

我能够做到这一点的最快方法是创建一个批处理模式ImpEx脚本,该脚本将以更快的方式擦除表。 然后,您可以从代码中触发此ImpEx(使用旧版模式​​),并且应该合理地快速删除这些项目。

谢谢James

一周热门 更多>