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