Article - CS425173

Poor Performance for Undo Checkout in Windchill PDMLink 13.0 Using SQL Server 2022

Modified: 29-Jan-2025   


Applies To

  • Windchill PDMLink 13.0
  • SQL Server 2022

Description

  • Undo Checkout performs worse with SQL Server 2022 than with SQL Server 2019
  • PTC Release Matrix for Windchill 13.0.1 notes "we have observed the undo checkout operation to be about 20% slower compared to an equivalent configuration using SQL Server 2019"
    • Note that the performance is not consistently 20% slower
    • ~775 objects is only 15% slower
    •  ~2,000 objects is 26% slower
    • ~19,000 objects is actually 56% faster
  • The time for undo checkout is primarily spent in batch deletes of IBAs
  • The following stacktrace is responsible for these deletes:
O-cost=17285:DB DELETE: DELETE  FROM StringValue  WHERE (idA2A2 = ?):count=24
   O-cost=17285:wt.fc.profiling.SQLExecutionTimeProfilingLogger.addEndEntry(SQLExecutionTimeProfilingLogger.java:103):count=24
     O-cost=17285:wt.util.TraceTimingCompositeLogger.lambda$addEndEntry$1(TraceTimingCompositeLogger.java:41):count=24
       O-cost=17285:java.base/java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807):count=24
         O-cost=17285:wt.util.TraceTimingCompositeLogger.addEndEntry(TraceTimingCompositeLogger.java:41):count=24
           O-cost=17285:wt.util.TraceTimingResource.close(TraceTimingResource.java:65):count=24
             O-cost=17285:wt.pds.SQLDatabasePds.deleteList(SQLDatabasePds.java:3680):count=24
               O-cost=17285:wt.pds.SQLDatabasePds.delete(SQLDatabasePds.java:2667):count=24
                 O-cost=17285:wt.pom.PersistentObjectManager.delete(PersistentObjectManager.java:628):count=24
                   O-cost=17285:wt.fc.StandardPersistenceManager.removeBatch(StandardPersistenceManager.java:2755):count=24
                     O-cost=17285:wt.fc.StandardPersistenceManager.remove(StandardPersistenceManager.java:2351):count=24
                       O-cost=17285:wt.fc.StandardPersistenceManager$DeleteBatchSpecChunkResultProcessor.process(StandardPersistenceManager.java:3630):count=24
                         O-cost=17285:wt.fc.AbstractOidChunkResultProcessor.process(AbstractOidChunkResultProcessor.java:147):count=24
                           O-cost=16127:wt.fc.AbstractOidChunkResultProcessor.addElement(AbstractOidChunkResultProcessor.java:78):count=22
                           |  O-cost=16127:wt.pds.SQLDatabasePds.query(SQLDatabasePds.java:892):count=22
                           |    O-cost=16127:wt.pom.PersistentObjectManager.query(PersistentObjectManager.java:1077):count=22
                           |      O-cost=16127:wt.fc.StandardPersistenceManager._query(StandardPersistenceManager.java:2052):count=22
                           |        O-cost=16127:wt.fc.StandardPersistenceManager.query(StandardPersistenceManager.java:2004):count=22
                           |          O-cost=16127:wt.fc.StandardPersistenceManager.query(StandardPersistenceManager.java:1514):count=22
                           |            O-cost=16127:wt.fc.batch.BatchSpecificationUtilities.queryTargetKeys(BatchSpecificationUtilities.java:89):count=22
                           |              O-cost=16127:wt.fc.StandardPersistenceManager.execute(StandardPersistenceManager.java:1660):count=22
                           |                O-cost=16127:wt.iba.value.service.MultiObjIBAValueDBService.deleteAllIBAsForIBAHolders(MultiObjIBAValueDBService.java:548):count=22
                           |                  O-cost=16127:wt.iba.value.service.MultiObjIBAValueDBService$4.notifyVetoableMultiObjectEvent(MultiObjIBAValueDBService.java:278):count=22
                           |                    O-cost=16127:wt.events.StandardKeyedEventBranch.intDispatchEvent(StandardKeyedEventBranch.java:306):count=22
                           |                      O-cost=16127:wt.events.StandardKeyedEventBranch.dispatchVetoableMultiObjectEvent(StandardKeyedEventBranch.java:268):count=22
                           |                        O-cost=16127:wt.events.StandardKeyedEventDispatcher.intDispatchEvent(StandardKeyedEventDispatcher.java:306):count=22
                           |                          O-cost=16127:wt.events.StandardKeyedEventDispatcher.dispatchVetoableMultiObjectEvent(StandardKeyedEventDispatcher.java:244):count=22
                           |                            O-cost=16127:wt.services.StandardManagerService.intDispatchVetoableEvent(StandardManagerService.java:413):count=22
                           |                              O-cost=16127:wt.services.StandardManagerService.dispatchVetoableMultiObjectEvent(StandardManagerService.java:315):count=22
                           |                                O-cost=16127:wt.fc.StandardPersistenceManager.dispatchVetoableEvent(StandardPersistenceManager.java:3051):count=22
                           |                                  O-cost=16127:wt.fc.StandardPersistenceManager.dispatchVetoableEvent(StandardPersistenceManager.java:3034):count=22
                           |                                    O-cost=16127:wt.fc.StandardPersistenceManager.remove(StandardPersistenceManager.java:2341):count=22
                           |                                      O-cost=16127:wt.fc.StandardPersistenceManager.remove(StandardPersistenceManager.java:1829):count=22
                           |                                        O-cost=16127:wt.fc.StandardPersistenceManager.delete(StandardPersistenceManager.java:867):count=22
                           |                                          O-cost=16127:jdk.internal.reflect.GeneratedMethodAccessor638.invoke(Unknown Source):count=22
                           |                                            O-cost=16127:java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43):count=22
                           |                                              O-cost=16127:java.base/java.lang.reflect.Method.invoke(Method.java:568):count=22
                           |                                                O-cost=16127:wt.services.ServiceFactory$ServerInvocationHandler.invoke(ServiceFactory.java:399):count=22
                           |                                                  O-cost=16127:jdk.proxy2/jdk.proxy2.$Proxy38.delete(Unknown Source):count=22
                           |                                                    O-cost=16127:wt.vc.wip.StandardWorkInProgressService.undoCheckouts(StandardWorkInProgressService.java:1753):count=22
                           |                                                      O-cost=16127:wt.vc.wip.StandardWorkInProgressService.undoCheckouts(StandardWorkInProgressService.java:1617):count=22
                           |                                                        O-cost=16127:java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method):count=22
                           |                                                          O-cost=16127:java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77):count=22
                           |                                                            O-cost=16127:java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43):count=22
                           |                                                              O-cost=16127:java.base/java.lang.reflect.Method.invoke(Method.java:568):count=22
                           |                                                                O-cost=16127:wt.services.ServiceFactory$ServerInvocationHandler.invoke(ServiceFactory.java:399):count=22
                           |                                                                  O-cost=16127:jdk.proxy2/jdk.proxy2.$Proxy67.undoCheckouts(Unknown Source):count=22
                           |                                                                    O-cost=16127:wt.epm.workspaces.WorkspaceUndocheckoutManager.undoCheckoutInternal(WorkspaceUndocheckoutManager.java:251):count=22
                           |                                                                      O-cost=16127:wt.epm.workspaces.WorkspaceUndocheckoutManager.undoCheckoutAndRestoreInWorkspace(WorkspaceUndocheckoutManager.java:295):count=22
                           |                                                                        O-cost=16127:wt.epm.workspaces.EPMStandardWorkspaceManager.undoCheckoutAndRestoreInWorkspace(EPMStandardWorkspaceManager.java:787):count=22
                           |                                                                          O-cost=16127:java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method):count=22
                           |                                                                            O-cost=16127:java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77):count=22
                           |                                                                              O-cost=16127:java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43):count=22
                           |                                                                                O-cost=16127:java.base/java.lang.reflect.Method.invoke(Method.java:568):count=22
                           |                                                                                  O-cost=16127:wt.services.ServiceFactory$ServerInvocationHandler.invoke(ServiceFactory.java:399):count=22
                           |                                                                                    O-cost=16127:jdk.proxy2/jdk.proxy2.$Proxy188.undoCheckoutAndRestoreInWorkspace(Unknown Source):count=22
                           |                                                                                      O-cost=16127:com.ptc.windchill.uwgm.proesrv.util.WorkspaceActionHelper.undoCheckoutAndRestoreInWS(WorkspaceActionHelper.java:249):count=22
                           |                                                                                        O-cost=16127:com.ptc.windchill.uwgm.proesrv.action.UndoCheckoutAction.executeAction(UndoCheckoutAction.java:145):count=22
                           |                                                                                          O-cost=16127:com.ptc.windchill.uwgm.proesrv.action.UwgmAction.execute(UwgmAction.java:84):count=22
                           |                                                                                            O-cost=16127:com.ptc.windchill.uwgm.proesrv.request.UndoCheckoutRequest.executeRequest(UndoCheckoutRequest.java:90):count=22
                           |                                                                                              O-cost=16127:com.ptc.windchill.uwgm.proesrv.StandardRequestDispatcher.dispatchRequest(StandardRequestDispatcher.java:1277):count=22
                           |                                                                                                O-cost=16127:com.ptc.windchill.uwgm.proesrv.StandardRequestDispatcher.scanRequests(StandardRequestDispatcher.java:1014):count=22
                           |                                                                                                  O-cost=16127:com.ptc.windchill.uwgm.proesrv.UwgmTransactionExecuterImpl.execute(UwgmTransactionExecuterImpl.java:109):count=22
                           |                                                                                                    O-cost=16127:com.ptc.windchill.uwgm.proesrv.UwgmTransactionExecuterImpl.executeTransaction(UwgmTransactionExecuterImpl.java:59):count=22
                           |                                                                                                      O-cost=16127:com.ptc.windchill.uwgm.proesrv.ProeService.executeTransaction(ProeService.java:111):count=22
                           |                                                                                                        O-cost=16127:com.ptc.windchill.uwgm.proesrv.ProeService.execute(ProeService.java:87):count=22
                           |                                                                                                          O-cost=16127:com.ptc.windchill.uwgm.soap.impl.uwgm.BinaryRequestHandler.processRequest(BinaryRequestHandler.java:679):count=22
                           |                                                                                                            O-cost=16127:com.ptc.windchill.uwgm.soap.impl.uwgm.BinaryRequestHandler.getCacheDescriptor(BinaryRequestHandler.java:528):count=22


 

This is a printer-friendly version of Article 425173 and may be out of date. For the latest version click CS425173