添加限制后内容目录同步出现速度问题

2020-09-07 16:41发布

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

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


大家好,

Hybris B2C1811。在几个cms组件上添加了限制(CMSInverseRestriction)之后,内容目录的同步持续3-10个小时。 如果我们取消限制,则同步将持续30秒。

我们没有太多受限制的cms组件,大约有20个。

我们试图在一个线程和#cores * 2个线程中执行-结果是相同的。

Impex示例:

  INSERT_UPDATE CMSInverseRestriction;  uid [unique = true]; 名称;  originalRestriction(uid,$ contentCV);  $ contentCV [unique = true]
  ;我们的限制;  ourRestriction;  ourOriginalRestriction;
 
  更新CMSParagraphComponent;  $ contentCV [unique = true];  uid [unique = true];  content [lang = zh]; 限制(uid,$ contentCV)
  ;  ;  ourCmsComponent;  " 
";我们的限制

有人可以建议为什么会这样吗?

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

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


大家好,

Hybris B2C1811。在几个cms组件上添加了限制(CMSInverseRestriction)之后,内容目录的同步持续3-10个小时。 如果我们取消限制,则同步将持续30秒。

我们没有太多受限制的cms组件,大约有20个。

我们试图在一个线程和#cores * 2个线程中执行-结果是相同的。

Impex示例:

  INSERT_UPDATE CMSInverseRestriction;  uid [unique = true]; 名称;  originalRestriction(uid,$ contentCV);  $ contentCV [unique = true]
  ;我们的限制;  ourRestriction;  ourOriginalRestriction;
 
  更新CMSParagraphComponent;  $ contentCV [unique = true];  uid [unique = true];  content [lang = zh]; 限制(uid,$ contentCV)
  ;  ;  ourCmsComponent;  " 
";我们的限制

有人可以建议为什么会这样吗?

付费偷看设置
发送
2条回答
我是小鹏鹏啊
1楼-- · 2020-09-07 16:48

Maxim,

这取决于多个因素,例如-

您要达到的同步级别- 如果仅是组件级别,则仅所选组件将被同步。 如果它位于页面级别,则它将尝试同步页面元数据(例如页面名称和页面标题),限制,内容插槽和组件(页面所使用的共享内容插槽除​​外)。 如果是Content Catalog版本,那么显然它会花费更长的时间来尝试同步组件,内容插槽,共享内容插槽,页面元数据,限制,页面模板和导航节点。如果您的页面具有导航组件,则其关联的导航 节点也将同步。

取决于同步策略-像简单类型一样容易。 它们的值将复制到目标项目中。 不知道目录版本的项目引用也很容易,因为将复制引用项目的主键(PK)值。 在某些情况下,会有一些属性是可识别目录的项目引用。 这意味着同步不能简单地复制PK值,因为需要一个对应的目标项目。

请检查CatalogVersionSyncJob.checkCatalogVersionValidity(),因为它会在开始实际同步之前对每种根类型执行重复检查,以确保目录版本的正确状态。 在大数据集上,这是一个昂贵的查询。 如果具有唯一的数据库索引,则这些重复检查的SQL查询是多余的,并且会在数据库上造成不必要的负载,尤其是在大型目录中。 在这种情况下,可以覆盖默认的CatalogVersionSyncJob实现以将其禁用。

希望您只有一个源目录。

三十六小时_GS
2楼-- · 2020-09-07 17:05

您好Prashant,

谢谢您的回答。

在后台运行的同步过程在强制更新模式下工作,因此它将更新所有cms组件。 当我们使用cms限制时,这是一个问题。 对于每个cms组件,都会构建相关组件的图形。 如果组件具有cms限制,则也会复制该组件。 每个cms限制在"组件"字段中都有相关组件的列表。 此列表中的每个组件也会被更新。 由于我们运行了完全同步,因此启用了forceUpdate模式,并且我们从限制的字段"组件"中更新每个组件很多次(对于每个有限制的组件)。

为避免此问题,我在字段的blackList中添加了字段" components"以拒绝同步此相关组件。

它看起来像这样:

  <?xml version =" 1.0" encoding =" UTF-8"吗?>
  <!DOCTYPE Aspectj PUBLIC"-//AspectJ//DTD//EN"" http://www.ee.org/aspectj/dtd/aspectj.dtd">
  
      
          
          
      
      <方面>
          
      
  






  @方面
  公共类SyncRestrictionAspect {
 
    @Around(" execution(* de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncCopyContext + .getCopyCreatorBlacklist(..))")
    public Object getRestrictionCopyCreatorBlacklist(final ProceedingJoinPoint joinPoint)抛出Throwable {
      Object [] args = joinPoint.getArgs();
      if(args.length> 0 && args [0] CMSInverseRestriction的实例){
        设置blackList =(Set)joinPoint.proceed();
        blackList.add(" components");
        返回blackList;
      }
      返回joinPoint.proceed();
    }
  }


  

仅更新cms限制时可能会带来问题。 在这种情况下,如果您在SmartEdit中更新内容目录,它将不会更新相关组件。 但对于我们的情况来说,它是合适的,因为我们可以在这种情况下使用完全同步。

一周热门 更多>