点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好,我需要使用cron作业从...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好,我需要使用cron作业从...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,我需要使用cron作业从数据库中删除所有过期的价格行。
我当前正在做的是获取此类PriceRowModels的列表,并将其传递给modelService.removeAll()函数。 型号数量为1,300,000+。 这项工作进行了2个多小时,不得不中止,而计数的变化仅为4。
即 之前:1,300,004
之后:1,300,000
现在,当作业运行时,我一直在查询,并且计数完全没有变化。 我也尝试过将总数减少到83,000+,但仍然是同一问题。
知道为什么会这样吗?
此外,最好只是迭代模型列表并一次对一个模型使用remove()函数?
谢谢。
报告的行为是由于事务引起的:如果使用
removeAll()
除去数据,则所有数据将在一次事务中除去,并且您 在运行的事务之外看不到更改。 如果发生大事务,这会对数据库造成很大的压力(我强烈建议不要影响事务中的1万行以上)。 您应该做的是获取一批要删除的模型,将其传递给removeAll()
,提交事务,然后重新开始。 要使用的批量大小在100-1000之间。请注意,HAC中的Groovy脚本在显式事务中执行,因此
remove()
和removeAll()
之间实际上没有区别。 如果您熟悉Hybris中的事务API,则提交当前事务应该没有问题。impex方法可能有效,因为每一行都是在单独的事务中处理的。 请注意,通过impex批量删除可能会遇到与脚本相同的问题。
一周热门 更多>