Monday, April 27, 2015

Re: Slowness of the resulting squashed migration

Thanks for the answer.

Right now, I just know that after squashing some migrations,
it created a squashed migrations with CreateModel + AlterField
and AddField after that runs on 5seconds, and now that I put
all the field in the CreateModel without any AlterField or AddField,
it runs on <2secondes.

I had some custom RunPython function in the migrations but
removed it for the squashing.

I will dig a bit more and open a ticket if I can reproduce it :)

Have a good day

On 04/24/2015 09:09 PM, Markus Holtermann wrote:

In principle it is possible to write your own or modify existing migrations unless they are already applied.

Regarding the additional AddField() operations: in case you have e.g. circular references between two models Django cannot add both models with their full columns at the same time. Django first adds one model without the ForeignKey, then the second model including the FK to the first model and finally adds the field to the first model pointing to the second model [1]. Bottom line: if you find a way to optimize something in your squashed migration, feel free to go ahead. It would be helpful if you report this as an enhance to our issue tracker [2] so we can include a possible improvement in future Django versions.



On Friday, April 24, 2015 at 8:14:34 PM UTC+2, aRkadeFR wrote:

After working on a project and having around 10 migrations per app,
I wanted to refactor some migrations (of the same app) into only one
and have a faster migrations while testing.

I did squashmigrations on many of the migrations, but the resulting
squased migration is still pretty slow (around 6 seconds to create 4
tables on MySQL 5.5 without any data inserted).

After looking at the migrations, there is some CreateModel(name='XXXX')
and after the table creation some AddField on the same table/models...

I would like to know if it's safe to change the migrations by hand? Is
there a reason the squashmigrations didn't refactor into only CreateModel
without AddField then?



No comments:

Post a Comment