Project

General

Profile

Development #29522

accélération migrate_schemas

Added by Frédéric Péters 5 months ago. Updated 4 months ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Start date:
07 Jan 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Indépendamment d'une parallélisation (#23045), il pourrait peut-être y avoir optimisation,

  • faire les migrations du schéma "public"
  • pour chaque tenant, si le contenu de la table django_migrations correspond au contenu du schéma "public", zapper le tenant
    • éventuellement, si ça ne correspond pas, lancer les migrations en précisant uniquement les applications où une différence a été notée. (je n'ai pas mesuré, je garderais ça pour plus tard)

0001-multitenant-skip-tenants-where-all-migrations-are-ap.patch View (2.56 KB) Frédéric Péters, 07 Jan 2019 02:12 PM

0001-multitenant-skip-tenants-where-all-migrations-are-ap.patch View (3.01 KB) Frédéric Péters, 07 Jan 2019 02:41 PM

0001-multitenant-skip-tenants-where-all-migrations-are-ap.patch View (3.17 KB) Frédéric Péters, 21 Feb 2019 08:26 AM

Associated revisions

Revision 37f7dff9 (diff)
Added by Frédéric Péters 4 months ago

multitenant: skip tenants where all migrations are applied (#29522)

History

#1 Updated by Frédéric Péters 5 months ago

#2 Updated by Frédéric Péters 5 months ago

  • Status changed from Solution proposée to En cours
  • Patch proposed changed from Yes to No

Oui mais non, ça choppe des migrations qui n'existent plus (artefact du foutoir dans ma db locale, sûr, mais je vais quand même voir pour considérer uniquement les migrations réelles).

#3 Updated by Thomas Noël 5 months ago

A noter qu'en théorie, le schéma "public" ne contient pas forcément les mêmes apps que ceux des tenants (INSTALLED_APPS/SHARED_APPS/TENANTS_APP).

Il faudrait plutôt considérer "les migrations du premier tenant qui a été migré".

#4 Updated by Frédéric Péters 5 months ago

A noter qu'en théorie, le schéma "public" ne contient pas forcément les mêmes apps que ceux des tenants (INSTALLED_APPS/SHARED_APPS/TENANTS_APP).

La table django_migrations du schéma public liste également les migrations concernant les TENANT_APPS.

Du coup on peut se baser dessus.

(mais aussi, considérons uniquement la pratique (?)).

#5 Updated by Frédéric Péters 4 months ago

Modification pour ne pas toucher au comportement quand --fake est passé.

#6 Updated by Christophe Siraut 4 months ago

Le raisonnement et le patch me semblent corrects. Est-ce que tu attends une forte amélioration? Je me dis que la boucle que tu propose implique une requête sur chaque schéma, opération qui serait peut-être aussi coûteuse que d'appeler run_migrations() sur le schéma?

#7 Updated by Frédéric Péters 4 months ago

Est-ce que tu attends une forte amélioration ?

C'est massif sur le cas plutôt commun de zéro migration et nombreux tenants.

#8 Updated by Christophe Siraut 4 months ago

  • Status changed from Solution proposée to Solution validée

#9 Updated by Frédéric Péters 4 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit 37f7dff960bc0ed228c3891ca32daf05e790a474
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Mon Jan 7 14:09:24 2019 +0100

    multitenant: skip tenants where all migrations are applied (#29522)

#10 Updated by Frédéric Péters 4 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF