migrations icon indicating copy to clipboard operation
migrations copied to clipboard

As the DB schema increases, so does time to execute the migration on oracle

Open edcaron opened this issue 3 years ago • 1 comments

Bug Report

Q A
BC Break no
Version 3.3.2

Summary

The more tables the schema has, the more time the migrations take to be executed, a lot more than in postgres. The first migrations are fast and then the time taken to execute the next migration is always n-1 + n , the subsequent migration is never faster than the last one.

time taken on oracle:

time taken on oracle

time taken on postgres: time taken on postgres

If i run all migrations I have here and create one more to run after all the other have finished, that single one takes a LOT of time to be ran.

That only happens on Oracle DB. The same migrations take way less time on PostgreSQL and the time does not increase over the more migrations are executed.

I debugged the code on Doctrine\Migrations\Version\DbalExecutor, function executeMigration and put some breakpoints there and found that the this call $this->schemaProvider->getSqlDiffToMigrate is taking the longest time to be executed. Might be something there with the comparison that gets buggy as the database schema increases

Current behavior

Time to execute migrations is always increasing with db size on oracle.

How to reproduce

  • set up oracle env
  • create multiple migrations (for different tables)
  • run doctrine-migrations migrate
  • view the time each migration took to execute

Expected behavior

Time to execute migrations is not interfered with database size on oracle.

edcaron avatar Nov 24 '21 21:11 edcaron

I have the same problem with migrations (also 3.3.2) on Oracle.

If I use addSql(), migrations are as quick as on MySQL, but using $schema, everything is painfully slow on Oracle:( The more tables are already in db, the longer migration takes.

[notice] Migrating up to DoctrineMigrations\Version20200703114450 [info] ++ migrating DoctrineMigrations\Version20200703114134 [warning] Migration DoctrineMigrations\Version20200703114134 was executed but did not result in any SQL statements. [info] Migration DoctrineMigrations\Version20200703114134 migrated (took 113ms, used 10M memory) [info] ++ migrating DoctrineMigrations\Version20200703114135 [info] Migration DoctrineMigrations\Version20200703114135 migrated (took 4403.1ms, used 10M memory) [info] ++ migrating DoctrineMigrations\Version20200703114136 [info] Migration DoctrineMigrations\Version20200703114136 migrated (took 16165.8ms, used 10M memory) [info] ++ migrating DoctrineMigrations\Version20200703114137 [info] Migration DoctrineMigrations\Version20200703114137 migrated (took 7716.3ms, used 10M memory) [info] ++ migrating DoctrineMigrations\Version20200703114139 [info] Migration DoctrineMigrations\Version20200703114139 migrated (took 12052.9ms, used 10M memory) [info] ++ migrating DoctrineMigrations\Version20200703114140 [info] Migration DoctrineMigrations\Version20200703114140 migrated (took 11549.1ms, used 12M memory) [info] ++ migrating DoctrineMigrations\Version20200703114141 [info] Migration DoctrineMigrations\Version20200703114141 migrated (took 16239.1ms, used 12M memory) [info] ++ migrating DoctrineMigrations\Version20200703114142 [info] Migration DoctrineMigrations\Version20200703114142 migrated (took 14599.2ms, used 12M memory) [info] ++ migrating DoctrineMigrations\Version20200703114143 [info] Migration DoctrineMigrations\Version20200703114143 migrated (took 16367.9ms, used 14M memory) [info] ++ migrating DoctrineMigrations\Version20200703114144 [info] Migration DoctrineMigrations\Version20200703114144 migrated (took 18528.5ms, used 14M memory) [info] ++ migrating DoctrineMigrations\Version20200703114145 [info] Migration DoctrineMigrations\Version20200703114145 migrated (took 17261.6ms, used 14M memory) [info] ++ migrating DoctrineMigrations\Version20200703114146 [info] Migration DoctrineMigrations\Version20200703114146 migrated (took 17196.7ms, used 16M memory) [info] ++ migrating DoctrineMigrations\Version20200703114148 [info] Migration DoctrineMigrations\Version20200703114148 migrated (took 18599.3ms, used 16M memory) [info] ++ migrating DoctrineMigrations\Version20200703114149 [info] Migration DoctrineMigrations\Version20200703114149 migrated (took 19631.2ms, used 16M memory) [info] ++ migrating DoctrineMigrations\Version20200703114150 [info] Migration DoctrineMigrations\Version20200703114150 migrated (took 20417.5ms, used 18M memory) [info] ++ migrating DoctrineMigrations\Version20200703114151 [info] Migration DoctrineMigrations\Version20200703114151 migrated (took 18421.9ms, used 18M memory) [info] ++ migrating DoctrineMigrations\Version20200703114152 [info] Migration DoctrineMigrations\Version20200703114152 migrated (took 20847.3ms, used 18M memory) [info] ++ migrating DoctrineMigrations\Version20200703114153 [info] Migration DoctrineMigrations\Version20200703114153 migrated (took 22223.8ms, used 20M memory) [info] ++ migrating DoctrineMigrations\Version20200703114154 [info] Migration DoctrineMigrations\Version20200703114154 migrated (took 30508.9ms, used 22M memory) [info] ++ migrating DoctrineMigrations\Version20200703114155 [info] Migration DoctrineMigrations\Version20200703114155 migrated (took 25085.4ms, used 22M memory) [info] ++ migrating DoctrineMigrations\Version20200703114156 [info] Migration DoctrineMigrations\Version20200703114156 migrated (took 25140.7ms, used 24M memory) [info] ++ migrating DoctrineMigrations\Version20200703114157 [info] Migration DoctrineMigrations\Version20200703114157 migrated (took 26312.3ms, used 24M memory) [info] ++ migrating DoctrineMigrations\Version20200703114158 [info] Migration DoctrineMigrations\Version20200703114158 migrated (took 27244ms, used 26M memory) [info] ++ migrating DoctrineMigrations\Version20200703114159 [info] Migration DoctrineMigrations\Version20200703114159 migrated (took 27840.8ms, used 26M memory) [info] ++ migrating DoctrineMigrations\Version20200703114160 [info] Migration DoctrineMigrations\Version20200703114160 migrated (took 29324.3ms, used 28M memory) [info] ++ migrating DoctrineMigrations\Version20200703114161 [info] Migration DoctrineMigrations\Version20200703114161 migrated (took 29227.5ms, used 30M memory) [info] ++ migrating DoctrineMigrations\Version20200703114162 [info] Migration DoctrineMigrations\Version20200703114162 migrated (took 30427.3ms, used 30M memory) [info] ++ migrating DoctrineMigrations\Version20200703114163 [info] Migration DoctrineMigrations\Version20200703114163 migrated (took 31018.2ms, used 32M memory) [info] ++ migrating DoctrineMigrations\Version20200703114164 [info] Migration DoctrineMigrations\Version20200703114164 migrated (took 31858.6ms, used 34M memory) [info] ++ migrating DoctrineMigrations\Version20200703114170 [info] Migration DoctrineMigrations\Version20200703114170 migrated (took 30491.2ms, used 36M memory) [info] ++ migrating DoctrineMigrations\Version20200703114171 [info] Migration DoctrineMigrations\Version20200703114171 migrated (took 32962.9ms, used 36M memory) [info] ++ migrating DoctrineMigrations\Version20200703114172 [info] Migration DoctrineMigrations\Version20200703114172 migrated (took 34883.2ms, used 38M memory) [info] ++ migrating DoctrineMigrations\Version20200703114173 [info] Migration DoctrineMigrations\Version20200703114173 migrated (took 33118.5ms, used 40M memory) [info] ++ migrating DoctrineMigrations\Version20200703114174 [info] Migration DoctrineMigrations\Version20200703114174 migrated (took 34628.5ms, used 42M memory) [info] ++ migrating DoctrineMigrations\Version20200703114175 [info] Migration DoctrineMigrations\Version20200703114175 migrated (took 36763ms, used 42M memory) [info] ++ migrating DoctrineMigrations\Version20200703114180 [info] Migration DoctrineMigrations\Version20200703114180 migrated (took 36903.6ms, used 44M memory) [info] ++ migrating DoctrineMigrations\Version20200703114190 [info] Migration DoctrineMigrations\Version20200703114190 migrated (took 36882ms, used 46M memory) [info] ++ migrating DoctrineMigrations\Version20200703114191 [info] Migration DoctrineMigrations\Version20200703114191 migrated (took 40136.3ms, used 48M memory) [info] ++ migrating DoctrineMigrations\Version20200703114200 [info] Migration DoctrineMigrations\Version20200703114200 migrated (took 36773.2ms, used 50M memory) [info] ++ migrating DoctrineMigrations\Version20200703114201 [info] Migration DoctrineMigrations\Version20200703114201 migrated (took 39563.5ms, used 52M memory) [info] ++ migrating DoctrineMigrations\Version20200703114202 [info] Migration DoctrineMigrations\Version20200703114202 migrated (took 37495.1ms, used 52M memory) [info] ++ migrating DoctrineMigrations\Version20200703114210 [info] Migration DoctrineMigrations\Version20200703114210 migrated (took 37801.1ms, used 54M memory) [info] ++ migrating DoctrineMigrations\Version20200703114211 [info] Migration DoctrineMigrations\Version20200703114211 migrated (took 37842.6ms, used 58M memory) [info] ++ migrating DoctrineMigrations\Version20200703114220 [info] Migration DoctrineMigrations\Version20200703114220 migrated (took 37832.6ms, used 58M memory) [info] ++ migrating DoctrineMigrations\Version20200703114221 [info] Migration DoctrineMigrations\Version20200703114221 migrated (took 37768.9ms, used 60M memory) [info] ++ migrating DoctrineMigrations\Version20200703114222 [info] Migration DoctrineMigrations\Version20200703114222 migrated (took 37795.2ms, used 62M memory) [info] ++ migrating DoctrineMigrations\Version20200703114223 [info] Migration DoctrineMigrations\Version20200703114223 migrated (took 37626.5ms, used 64M memory) [info] ++ migrating DoctrineMigrations\Version20200703114224 [info] Migration DoctrineMigrations\Version20200703114224 migrated (took 36865.7ms, used 66M memory) [info] ++ migrating DoctrineMigrations\Version20200703114225 [info] Migration DoctrineMigrations\Version20200703114225 migrated (took 37389.5ms, used 66M memory) [info] ++ migrating DoctrineMigrations\Version20200703114226 [info] Migration DoctrineMigrations\Version20200703114226 migrated (took 37546.2ms, used 68M memory) [info] ++ migrating DoctrineMigrations\Version20200703114227 [info] Migration DoctrineMigrations\Version20200703114227 migrated (took 37287.5ms, used 70M memory) [info] ++ migrating DoctrineMigrations\Version20200703114300 [info] Migration DoctrineMigrations\Version20200703114300 migrated (took 37873.1ms, used 72M memory) [info] ++ migrating DoctrineMigrations\Version20200703114301 [info] Migration DoctrineMigrations\Version20200703114301 migrated (took 38073.2ms, used 74M memory) [info] ++ migrating DoctrineMigrations\Version20200703114302 [info] Migration DoctrineMigrations\Version20200703114302 migrated (took 41634.2ms, used 76M memory) [info] ++ migrating DoctrineMigrations\Version20200703114303 [info] Migration DoctrineMigrations\Version20200703114303 migrated (took 41619.3ms, used 78M memory) [info] ++ migrating DoctrineMigrations\Version20200703114304 [info] Migration DoctrineMigrations\Version20200703114304 migrated (took 44166ms, used 78M memory) [info] ++ migrating DoctrineMigrations\Version20200703114305 [info] Migration DoctrineMigrations\Version20200703114305 migrated (took 40832.8ms, used 80M memory) [info] ++ migrating DoctrineMigrations\Version20200703114306 [info] Migration DoctrineMigrations\Version20200703114306 migrated (took 43710.1ms, used 82M memory) [info] ++ migrating DoctrineMigrations\Version20200703114307 [info] Migration DoctrineMigrations\Version20200703114307 migrated (took 40465.9ms, used 84M memory) [info] ++ migrating DoctrineMigrations\Version20200703114308 [info] Migration DoctrineMigrations\Version20200703114308 migrated (took 45452.3ms, used 86M memory) [info] ++ migrating DoctrineMigrations\Version20200703114320 [info] Migration DoctrineMigrations\Version20200703114320 migrated (took 45397.9ms, used 88M memory) [info] ++ migrating DoctrineMigrations\Version20200703114321 [info] Migration DoctrineMigrations\Version20200703114321 migrated (took 45354.9ms, used 90M memory) [info] ++ migrating DoctrineMigrations\Version20200703114325 [info] Migration DoctrineMigrations\Version20200703114325 migrated (took 43957.4ms, used 96.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114326 [info] Migration DoctrineMigrations\Version20200703114326 migrated (took 45846.7ms, used 96.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114330 [info] Migration DoctrineMigrations\Version20200703114330 migrated (took 43665.6ms, used 98.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114340 [warning] Migration DoctrineMigrations\Version20200703114340 was executed but did not result in any SQL statements. [info] Migration DoctrineMigrations\Version20200703114340 migrated (took 9.6000000000931ms, used 98.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114400 [info] Migration DoctrineMigrations\Version20200703114400 migrated (took 49006.4ms, used 100.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114410 [info] Migration DoctrineMigrations\Version20200703114410 migrated (took 47621ms, used 104.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114411 [info] Migration DoctrineMigrations\Version20200703114411 migrated (took 46444.2ms, used 106.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114420 [info] Migration DoctrineMigrations\Version20200703114420 migrated (took 45473.7ms, used 110.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114421 [info] Migration DoctrineMigrations\Version20200703114421 migrated (took 45509.9ms, used 112.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114430 [info] Migration DoctrineMigrations\Version20200703114430 migrated (took 46229.7ms, used 112.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114440 [info] Migration DoctrineMigrations\Version20200703114440 migrated (took 6.7999999998137ms, used 112.01M memory) [info] ++ migrating DoctrineMigrations\Version20200703114450 [info] Migration DoctrineMigrations\Version20200703114450 migrated (took 46281.7ms, used 114.01M memory) [notice] finished in 2317693.5ms, used 114.01M memory, 74 migrations executed, 588 sql queries

The quick migrations in debug above are the ones, that addSql is used, the slow ones are using $schema.

PetrNovotnyGS avatar Aug 25 '22 07:08 PetrNovotnyGS