Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration with version 7.1.1 on Oracle takes 50% longer #2993

Closed
kasgilpofi opened this issue Oct 29, 2020 · 2 comments
Closed

Migration with version 7.1.1 on Oracle takes 50% longer #2993

kasgilpofi opened this issue Oct 29, 2020 · 2 comments

Comments

@kasgilpofi
Copy link

Which version and edition of Flyway are you using?

7.1.1 Teams Edition

Which client are you using? (Command-line, Java API, Maven plugin, Gradle plugin)

Maven Plugin

Which database are you using (type & version)?

Oracle Database 19c Enterprise Edition

Which operating system are you using?

Windows

What did you do?

Created a maven project (https://flywaydb.org/documentation/getstarted/firststeps/maven).
Added 200 CREATE TABLE Files ("create table TABLE1 (ID int not null, NAME varchar(100) not null);", ...)
Called mvn flyway:migrate

What did you expect to see?

A similar performance as with version 6.5.5

What did you see instead?

The performance of the Version 7.1.1 is + 50% compared to Version 6.5.5

Version 7.1.1 Teams Edition: Total time: 01:30 min
Version 6.5.5 Pro Edition: Total time: 01:00 min

In our project we have around 5000 files to migrate, i.e. with the new version it will take more than 10 minutes longer than before.

The 30 seconds are lost in MigrationInfoServiceImpl.refresh().
OracleDatabase.isXmlDbAvailable() is called 201x.
OracleDatabase.dbaOrAll(String) is called 603x.
JdbcTemplate.queryForStringList is called 201x.

All these calls return data about the Database, that could also be cached.

Profiling of Version 7.1.1
grafik

grafik

Profiling of Version 6.5.5
grafik

@kasgilpofi
Copy link
Author

kasgilpofi commented Oct 30, 2020

There are also 1210 calls to org.flywaydb.core.internal.database.base.Table.exists() for the table "flyway_schema_history".
I suppose, that this value can also be cached, after the first time the return value was true.

grafik

@kasgilpofi
Copy link
Author

And the same applies probably also for the 203 calls to org.flywaydb.core.internal.database.base.Schema.exists()

grafik

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants