Article - CS177841

How to size the Type and Attribute Definition caches to improve general performance in Windchill

Modified: 26-Dec-2025   


Applies To

  • Windchill PDMLink 10.0 to 13.1
  • FlexPLM 10.2 to 13.0
  • Windchill PartsLink 10.2 to 13.0

Description

  • It takes long time or very slow to display pages which use Types or Attributes
    • Sometimes it takes few seconds to display, but usually it takes long time, e.g. more than 1 minute to display, especially just after Windchill start up
    • Many Windchill pages involve type or attributes, e.g. 
      • Pages with Table Views,e.g. folder page
      • WTPart information/details page
      • Affected or Resulting Objects of Change Task
      • Folder content page, even it has few objects
      • Select Affected/Resulting Objects page of Edit Change Task
      • Structure tab of a Part
      • Opening of an eBom
      • Export Importable Spreadsheet
      • Load the popup window of New Document or Part
      • Slow Windchill loading pages, continues spinning wheel for different operations
      • Open detail of workitem
      • My Tasks table of home page
  • The system defines many Types or Attributes
  • Method Server may show warning below
Cache ClassificationEnumCache may by thrashing - consider increasing cache size
  • Sometime the modification for Classification Structure will not take effect immediately
  • Sometimes the modification for Global Enumeration List is not synchronizing to every slave node in cluster environment
  • Sometimes the modification for Types or Attributes will take different results on different browsers
  • Importing type takes very long time on one slave, but fast on the other slave
  • Administrator receives ClassificationEnumCache overflow email
  • Bulk indexing is slow
  • Constraints on Classification Structure is not showing anything and throwing warning as below

           

  • SQL and Stack Trace information as below
    • Total Seconds:      3.5615422
      Total Calls:      2699
      SQL Statement:      SELECT 'com.ptc.core.lwc.server.LWCStructEnumAttTemplate',A0.administrativeLockIsNull,A0.typeadministrativeLock,A0.deletedId,A0.classnamekeydomainRef,
      A0.idA3domainRef,A0.inheritedDomain,A0.name,A0.namespace,A0.organizationScopeIsNull,A0.classnamekeyorganizationScop,A0.idA3organizationScope,A0.classnamekeyA4,A0.idA3A4,
      CONVERT(varchar,A0.createStampA2,120),A0.markForDeleteA2,CONVERT(varchar,A0.modifyStampA2,120),A0.idA2A2,A0.updateCountA2,CONVERT(varchar,A0.updateStampA2,120)
      FROM LWCStructEnumAttTemplate A0 WHERE ((A0.idA3A4 = ?) AND (A0.deletedId IS NULL )) AND (A0.markForDeleteA2 = 0)
      Stack Trace:      
      "ajp-bio-8012-exec-14" Id=9882 daemon prio=5 RUNNABLE
        at wt.pds.AbstractResultCursor.executeQuery(AbstractResultCursor.java:626)
      ...
        at wt.pom.PersistentObjectManager.query(PersistentObjectManager.java:1108)
        at wt.pom.PersistentObjectManager.query(PersistentObjectManager.java:1017)
        at wt.fc.StandardPersistenceManager._query(StandardPersistenceManager.java:1993)
        at wt.fc.StandardPersistenceManager._find(StandardPersistenceManager.java:2022)
        at wt.fc.StandardPersistenceManager.find(StandardPersistenceManager.java:681)
        at com.ptc.core.lwc.server.cache.db.TypeDefinitionDBService.getTypeDefinitionChildrenIds(TypeDefinitionDBService.java:572)
        at com.ptc.core.lwc.server.cache.TypeDefinitionManager.getChildTypeDefIdsFromDB(TypeDefinitionManager.java:2405)
        at com.ptc.core.lwc.server.cache.TypeDefinitionManager.updateCache(TypeDefinitionManager.java:2335)
        at com.ptc.core.lwc.server.cache.TypeDefinitionManager.retrieveAndCacheType(TypeDefinitionManager.java:436)
        at com.ptc.core.lwc.server.cache.TypeDefinitionManager.getTypeDefView(TypeDefinitionManager.java:392)
        at com.ptc.core.lwc.server.cache.TypeDefinitionManager.ensureAllChildrenAreCached(TypeDefinitionManager.java:2433)
        at com.ptc.core.lwc.server.cache.TypeDefinitionManager.getChildTypeDefViews(TypeDefinitionManager.java:1401)
        at com.ptc.core.lwc.server.StandardTypeDefinitionService.getChildTypeDefViews(StandardTypeDefinitionService.java:492)
        at com.ptc.core.lwc.common.dynamicEnum.provider.ClassificationEnumerationInfoProvider.getChildTypeDefViews(ClassificationEnumerationInfoProvider.java:337)
        at com.ptc.core.lwc.common.dynamicEnum.provider.ClassificationEnumerationInfoProvider.addChildEntriesRecursively(ClassificationEnumerationInfoProvider.java:230)
      
      The queries can also differ, for example:
      SELECT  'com.ptc.core.lwc.server.LWCPropertyValue',...
       FROM LWCPropertyValue A0
       WHERE  ((A0.idA3C4 = ?))
       AND (A0.markForDeleteA2 = 0)
      
      SELECT  'com.ptc.core.lwc.server.LWCLocalizablePropertyValue',...
       FROM LWCLocalizablePropertyValue A0
       WHERE  ((A0.idA3C4 = ?))
       AND (A0.markForDeleteA2 = 0)
This is a printer-friendly version of Article 177841 and may be out of date. For the latest version click CS177841