Article - CS425173
Poor Performance for Undo Checkout in Windchill PDMLink 13.0 Using SQL Server 2022
Modified: 19-Jan-2026
Applies To
- Windchill PDMLink 13.0 to 13.1
- 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.e
This is a printer-friendly version of Article 425173 and may be out of date. For the latest version click CS425173