Quantcast
Channel: Liquibase Forums
Viewing all articles
Browse latest Browse all 2993

Re : IndexExists performance

$
0
0
I'm using Liquibase 3.2.0 snapshot and also suffering from severely slow performance in the index checks. I did some digging and found the query (Oracle) and stack trace is where the slowness appears to be. In my environment I was finding this particular query was taking between 20 and 30 minutes.

SQL Query:

SELECT  NULL                                                   AS pktable_cat  ,
        p.owner                                                AS pktable_schem,
        p.table_name                                           AS pktable_name ,
        pc.column_name                                         AS pkcolumn_name,
        NULL                                                   AS fktable_cat  ,
        f.owner                                                AS fktable_schem,
        f.table_name                                           AS fktable_name ,
        fc.column_name                                         AS fkcolumn_name,
        fc.position                                            AS key_seq      ,
        NULL                                                   AS update_rule  ,
        DECODE (f.delete_rule, 'CASCADE', 0, 'SET NULL', 2, 1) AS delete_rule  ,
        f.constraint_name                                      AS fk_name      ,
        p.constraint_name                                      AS pk_name      ,
        DECODE(f.deferrable, 'DEFERRABLE', 5, 'NOT DEFERRABLE', 7, 'DEFERRED', 6) deferrability
FROM    all_cons_columns pc,
        all_constraints p  ,
        all_cons_columns fc,
        all_constraints f
WHERE   1                      = 1
        AND p.owner            = 'OPENTWINS_STAGING_SBS'
        AND f.constraint_type  = 'R'
        AND p.owner            = f.r_owner
        AND p.constraint_name  = f.r_constraint_name
        AND p.constraint_type IN ('P', 'U')
        AND pc.owner           = p.owner
        AND pc.constraint_name = p.constraint_name
        AND pc.table_name      = p.table_name
        AND fc.owner           = f.owner
        AND fc.constraint_name = f.constraint_name
        AND fc.table_name      = f.table_name
        AND fc.position        = pc.position
ORDER BY fktable_schem,
        fktable_name  ,
        key_seq ;

Stack trace below:

Daemon Thread [[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] (Suspended)
owns: T4CConnection  (id=113)
owns: ConcurrentHashMap<K,V>  (id=114)
owns: ConcurrentHashMap<K,V>  (id=115)
owns: Object  (id=116)
SocketNativeIO.readBytesPinned(FileDescriptor, byte[], int, int, int) line: not available [native method]
SocketNativeIO.socketRead(FileDescriptor, byte[], int, int, int) line: 32
SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) line: not available
SocketInputStream.read(byte[], int, int) line: 129
DataPacket(Packet).receive() line: 300
DataPacket.receive() line: 106
NetInputStream.getNextPacket() line: 315
NetInputStream.read(byte[], int, int) line: 260
NetInputStream.read(byte[]) line: 185
NetInputStream.read() line: 102
T4CSocketInputStreamWrapper.readNextPacket() line: 124
T4CSocketInputStreamWrapper.read() line: 80
T4CMAREngine.unmarshalUB1() line: 1137
T4C8Oall(T4CTTIfun).receive() line: 290
T4C8Oall(T4CTTIfun).doRPC() line: 192
T4C8Oall.doOALL(boolean, boolean, boolean, boolean, boolean, OracleStatement$SqlKind, int, byte[], int, Accessor[], int, Accessor[], int, byte[], char[], short[], int, DBConversion, byte[], InputStream[][], byte[][][], OracleTypeADT[][], OracleStatement, byte[], char[], short[], T4CTTIoac[], int[], int[], int[], NTFDCNRegistration) line: 531
T4CStatement.doOall8(boolean, boolean, boolean, boolean, boolean) line: 193
T4CStatement.executeForDescribe() line: 873
T4CStatement(OracleStatement).executeMaybeDescribe() line: 1167
T4CStatement(OracleStatement).doExecuteWithTimeout() line: 1289
T4CStatement(OracleStatement).executeQuery(String) line: 1491
OracleStatementWrapper.executeQuery(String) line: 406
Statement_oracle_jdbc_driver_OracleStatementWrapper(Statement).executeQuery(String) line: 506
JdbcDatabaseSnapshot$CachingDatabaseMetaData$1(ResultSetCache$ResultSetExtractor).executeAndExtract(String, Database) line: 185
JdbcDatabaseSnapshot$CachingDatabaseMetaData$1.bulkFetch() line: 144
ResultSetCache.get(ResultSetExtractor) line: 47
JdbcDatabaseSnapshot$CachingDatabaseMetaData.getForeignKeys(String, String, String, String) line: 55
ForeignKeySnapshotGenerator.addTo(DatabaseObject, DatabaseSnapshot) line: 75
ForeignKeySnapshotGenerator(JdbcSnapshotGenerator).snapshot(DatabaseObject, DatabaseSnapshot, SnapshotGeneratorChain) line: 72
SnapshotGeneratorChain.snapshot(T, DatabaseSnapshot) line: 47
DataSnapshotGenerator(JdbcSnapshotGenerator).snapshot(DatabaseObject, DatabaseSnapshot, SnapshotGeneratorChain) line: 62
SnapshotGeneratorChain.snapshot(T, DatabaseSnapshot) line: 47
ColumnSnapshotGenerator(JdbcSnapshotGenerator).snapshot(DatabaseObject, DatabaseSnapshot, SnapshotGeneratorChain) line: 62
SnapshotGeneratorChain.snapshot(T, DatabaseSnapshot) line: 47
JdbcDatabaseSnapshot(DatabaseSnapshot).include(T) line: 146
JdbcDatabaseSnapshot(DatabaseSnapshot).replaceObject(Object) line: 219
JdbcDatabaseSnapshot(DatabaseSnapshot).replaceObject(Object) line: 232
JdbcDatabaseSnapshot(DatabaseSnapshot).includeNestedObjects(DatabaseObject) line: 178
JdbcDatabaseSnapshot(DatabaseSnapshot).include(T) line: 160
JdbcDatabaseSnapshot(DatabaseSnapshot).<init>(DatabaseObject[], Database, SnapshotControl) line: 45
JdbcDatabaseSnapshot.<init>(DatabaseObject[], Database, SnapshotControl) line: 22
SnapshotGeneratorFactory.createSnapshot(DatabaseObject[], Database, SnapshotControl) line: 129
SnapshotGeneratorFactory.createSnapshot(CatalogAndSchema[], Database, SnapshotControl) line: 122
SnapshotGeneratorFactory.createSnapshot(CatalogAndSchema, Database, SnapshotControl) line: 110
SnapshotGeneratorFactory.has(DatabaseObject, Database) line: 100
IndexExistsPrecondition.check(Database, DatabaseChangeLog, ChangeSet) line: 95
PreconditionContainer(AndPrecondition).check(Database, DatabaseChangeLog, ChangeSet) line: 37
PreconditionContainer.check(Database, DatabaseChangeLog, ChangeSet) line: 199
ChangeSet.execute(DatabaseChangeLog, ChangeExecListener, Database) line: 273
UpdateVisitor.visit(ChangeSet, DatabaseChangeLog, Database, Set<ChangeSetFilterResult>) line: 43
ChangeLogIterator.run(ChangeSetVisitor, Database) line: 68
Liquibase.update(Contexts) line: 194
Liquibase.update(String) line: 173
SpringLiquibase.performUpdate(Liquibase) line: 325
SpringLiquibase.afterPropertiesSet() line: 282
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).invokeInitMethods(String, Object, RootBeanDefinition) line: 1369
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1335
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 473
AbstractAutowireCapableBeanFactory$1.run() line: 409
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380
AbstractBeanFactory$1.getObject() line: 264
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164
DefaultListableBeanFactory.preInstantiateSingletons() line: 429
ClassPathXmlApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728
ClassPathXmlApplicationContext(AbstractApplicationContext).refresh() line: 380
ClassPathXmlApplicationContext.<init>(String[], boolean, ApplicationContext) line: 139
ClassPathXmlApplicationContext.<init>(String) line: 83
WLSEventListener.preStart(ApplicationLifecycleEvent) line: 142
BaseLifecycleFlow$PreStartAction.run() line: 282
AuthenticatedSubject.doAs(AbstractSubject, PrivilegedAction) line: 321
SecurityManager.runAs(AuthenticatedSubject, AuthenticatedSubject, PrivilegedAction) line: 120
BaseLifecycleFlow$PreStartAction(BaseLifecycleFlow$LifecycleListenerAction).invoke() line: 199
HeadLifecycleFlow(BaseLifecycleFlow).preStart() line: 62
HeadLifecycleFlow.prepare() line: 283
BaseDeployment$1.next(Object) line: 648
StateMachineDriver.nextState(StateChange, Object[]) line: 52
EarDeployment(BaseDeployment).prepare(DeploymentContext) line: 191
EarDeployment.prepare(DeploymentContext) line: 59
DeploymentStateChecker.prepare(DeploymentContext) line: 154
AppContainerInvoker.prepare(DeploymentContext) line: 60
AppDeployment.prepare() line: 144
DeploymentAdapter$1.doPrepare(Object) line: 39
DeploymentAdapter$1(DeploymentAdapter).prepare(Object) line: 191
AppTransition$1.transitionApp(DeploymentAdapter, Object) line: 21
ConfiguredDeployments.transitionApps(AppTransition) line: 240
ConfiguredDeployments.prepare() line: 165
ConfiguredDeployments.deploy() line: 122
DeploymentServerService.resume() line: 180
DeploymentServerService.start() line: 96
SubsystemRequest.run() line: 64
ExecuteThread.execute(Runnable) line: 256
ExecuteThread.run() line: 221


Viewing all articles
Browse latest Browse all 2993

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>