niedz., 6.11.2016, 00:58 użytkownik charettes <charett...@gmail.com>
napisał:

> I have to agree with Marteen.
>
> From my experience what really slow down the migrate and makemigrations
> command is the rendering of model states into concrete model classes. This
> is something I concluded from my work on adding the plan object to
> pre_migrate
> and post_migrate signals.
>

Yes, rendering model states is very slow but in our case ordering them is
also taking quite some time.

I assume that with a linear chain of migrations we'd only have to render
model states when detecting database changes (makemigrations) and when
executing RunPython code?

As soon as an operation accesses state.apps the rendering kicks in which
> triggers the dynamic creation of multiple model classes and the computation
> of reverse relationships. There are mechanisms in place to prevent the
> whole
> project model classes from being rendered again when a model state is
> altered but if the operation is performed on a model referenced by many
> others the relationship chain might force a large number of them to be
> rendered again causing massive slow downs.
>
> Markus Holtermann has been working on teaching the migration framework
> how to perform database operations without relying on state.apps which
> should
> solve the remaining performance issues of the migrate command. In the case
> of makemigrations the last remaining issue in the master branch should be
> solved
> by stopping to rely on state.apps in RenameModel.state_forwards[1].
>
> Patryk, many improvement landed in 1.9 and 1.10 to speed up the commands
> dealing with migrations. Are you still seeing the same slowdown on these
> versions?
>

I run a mix of 1.9 and 1.10 and am aware of the recent optimisations as I
helped with some of them during previous DUTHs.

Simon
>
> [1] https://github.com/django/django/pull/7468
>
>
> Le dimanche 6 novembre 2016 00:32:04 UTC+1, Marten Kenbeek a écrit :
>
> On Saturday, November 5, 2016 at 4:53:49 PM UTC+1, Patryk Zawadzki wrote:
>
> 1. Dependency resolution that turns the migration dependency graph into an
> ordered list happens every time you try to create or execute a migration.
> If you have several hundred migrations it becomes quite slow. I'm talking
> multiple minutes kind of slow. As you can imagine working with multiple
> branches or perfecting your migrations quickly becomes a tedious task.
>
>
> Did the dependency resolution actually come up in benchmarks/profiles as a
> bottleneck? When I optimized and benchmarked the dependency graph code, it
> had no trouble ordering ~1000 randomly generated migrations with lots of
> inter-app dependencies in less than a second. I'd be surprised if this had
> any significant impact on the overall performance of migrations.
>
> An easy way to test this is the `showmigrations` command, which will only
> generate the graph without any model state changes or model rendering
> taking place. It does some other things, but nothing that should take in
> the order of minutes.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers (Contributions to Django itself)" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-developers+unsubscr...@googlegroups.com.
> To post to this group, send email to django-developers@googlegroups.com.
> Visit this group at https://groups.google.com/group/django-developers.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-developers/4a012e54-fae5-4bba-97a9-f323f38e53bc%40googlegroups.com
> <https://groups.google.com/d/msgid/django-developers/4a012e54-fae5-4bba-97a9-f323f38e53bc%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/CANw2pUGrzkDD5hjD-PXh%3DX5GXoqReiebaxuB8%3DggivB4%2B9DTaQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to