Opened 11 years ago
Last modified 11 years ago
#24224 closed Cleanup/optimization
sqlmigrate is slow — at Initial Version
| Reported by: | TorstenRottmann | Owned by: | nobody |
|---|---|---|---|
| Component: | Migrations | Version: | 1.7 |
| Severity: | Normal | Keywords: | migration slow |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
When requesting an sqlmigrate (or when do a test or migrate also), it takes a very long time to compute the sql for a particular app migration. This app has some 78 models and is highly interconnected with ForeignKeys (100+).
I ran the sqlmigrate through the profiler an got these results:
74628418 function calls (74229555 primitive calls) in 3653.843 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
4 3519.805 879.951 3519.805 879.951 {method 'write' of 'file' objects}
552977 18.609 0.000 29.893 0.000 __init__.py:292(deconstruct)
40096 14.244 0.000 20.051 0.001 related.py:276(swappable_setting)
318698 11.924 0.000 21.114 0.000 __init__.py:1011(__init__)
575182 9.569 0.000 12.634 0.000 __init__.py:123(__init__)
571729 7.336 0.000 97.027 0.000 state.py:277(construct_fields)
16773896/16722010 6.750 0.000 6.790 0.000 {getattr}
85138 2.849 0.000 4.883 0.000 __init__.py:1092(__init__)
553122/553106 2.546 0.000 6.503 0.000 {__import__}
637429/318719 1.916 0.000 2.146 0.000 deconstruct.py:15(__new__)
3236790 1.912 0.000 1.912 0.000 {method 'startswith' of 'unicode' objects}
3881367/3881365 1.891 0.000 4.462 0.000 {isinstance}
5915601 1.566 0.000 1.841 0.000 options.py:283(_swapped)
43868 1.525 0.000 1.525 0.000 base.py:33(subclass_exception)
901715 1.508 0.000 2.571 0.000 abc.py:128(__instancecheck__)
21946/19820 1.486 0.000 24.646 0.001 base.py:61(__new__)
...
Waiting more than a minute for a test to start is very annoying ...
Note:
See TracTickets
for help on using tickets.