点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我当前正在调整某些流程... ...如果应用了促销,则在购物车修改(即:将产品添加到购物车)期间,平均时间从250毫秒增加。 到> 1秒!!
分析后,请注意执行了2000多个查询(购物车条目数为100)
但是,如果不应用促销活动,则查询数量"仅"约为100。
我需要解决方案! 我将感谢您的任何帮助(我尝试过CachedPromotionsManager,但似乎没有解决任何问题)
查找附带的两个屏幕截图(最详细的查询详细信息和所有查询):
的确感谢!
(154.6 kB)
Julio嗨,
我通常建议在每个店面相关立面上(通常是CartFacade和CheckoutFacade,CustomerFacade等)启用交易
除了具有ACID属性的交易优势外,由于延迟的存储机制,您已经注意到。
启用交易的副作用是:
这将增加数据库锁定的持续时间。 通常,电子商务店面的可变数据和易变数据(购物车,用户帐户设置)不共享ACR,因此对并发用户不会有太大影响。
如果需要在同一事务中查询/过滤在查询之前更新的数据,则可能必须显式刷新所有待处理的更新到数据库,以便获得一致的结果。 具体而言,这应该在非常罕见的情况下发生
每日技巧:通常,您可以使用Spring AOP声明式地启用事务。 以下XML代码段将使在CartFacade和CheckoutFacade接口和实现上声明的所有操作都是事务性的:
大家好,
采用这种促销服务的简单测试实现,将添加到购物车+促销更新操作的时间减少了10倍。
对此有什么陷阱吗?
我想知道为什么产品中仍然存在如此痛苦的东西。
谢谢__Julio
对此的快速解决方案是打开内存cnd促销缓存,但是这取决于您的业务需求是否允许您执行此操作。 升级缓存中的内存将避免所有这些查询。 以下是将两者同时启用的步骤:
1)将以下行添加到您的local.properties文件中以打开内存中的购物车:
2)取消注释Promotions-spring.xml文件中的以下bean,以打开促销缓存:
如果由于商业原因不能使用内存购物车,则另一个选择是覆盖DefaultCommerceCartCalculationStrategy中的calculateCart方法。 您可以在计算购物车时取消促销计算。 如果不需要您的迷你购物车显示该订单的总价,则可以在此处取消,因为当您单击以查看您的主购物车或去结帐时,它将调用recalculateCart,它仍将完整地保留促销计算逻辑并进行计算 订单已满。
我的航班延误了,我有时间进一步调查...
上面的踪迹显示了N + 1问题的明确情况( http://stackoverflow.com/questions/97197/what-is-the-n1-selects-issue )
深入Hybris JALO持久层,我已经意识到,设置属性后,当且仅当没有当前事务正在运行时,数据库才会更新...
...所以,为什么不在自己的交易中不执行-促销更新?
以下代码可以解决问题:
result =(PromotionOrderResults)Transaction.current()。execute(new TransactionBody(){
另一方面:-看一下事件探查器,我们仍然遇到N + 1问题(每个购物车条目一个数据库命中),有没有办法预取同级条目以将其转换为N + 1/x问题 ?
我认为促销是电子商务的真正重要领域,而延迟迁移到服务层是痛苦的。 请注意OOTB上的帖子
另一方面,的确感谢杰弗里的支持:
我已经将促销扩展从5.2.0.2迁移到了5.0.3,在这种情况下(添加到购物车)似乎没有任何改善。 无论如何,我不太了解内部的以下行是什么?
周末愉快。 现在,我对上面介绍的方法感到满意!
一周热门 更多>