Autre #24237
performance, analyse/amélioration requêtes SQL
Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
02 juin 2018
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Non
Planning:
Description
De #24099, Benjamin : "150 requêtes pour afficher une page de CMS pour moi c'est problématique", et ce nombre 150 vient de Chris, "ça n'accélère pas le chargement d'une page combo de 150 transactions".
Pour reprendre sans dévier, de #24007, on y parle de https://combo-fredcook.dev.entrouvert.org/une-autre-page/, et c'est 89 requêtes SQL.
Décompte et commentaires :
- 36 types de cellule, avec deux requêtes pour chaque type : 72.
- c'est une requête pour la page affichée, data_textcell.page_id = 6
- et l'autre requête pour la constitution du footer, la remontée via parentcell, data_textcell.placeholder = "footer" and data_text_cell.page_id in (1)
- 2 types de cellules exposant des badges, 2 requêtes
- 1 régie, 1 requête
- 14 requêtes sur la table page
- slug = 'une-autre-page', 2×
- slug = 'index' and parent_id is null, 1×
- ces trois-ci correspondent à la récupération de la page
- parent_id is null, 1×
- parent_id = 1, 1×
- parent_id = 2, 1×
- parent_id = 5, 1×
- id = 5, 3×
- parent_id = 6, 1×
- parent_id = 8, 1×
- id = 1, 2×
- et toutes celles-ci, a priori c'est la constitution de la navigation
Fichiers
Demandes liées
Historique
Mis à jour par Frédéric Péters il y a presque 6 ans
- Lié à Development #24238: Réduire le nombre de requêtes nécessaires à la constitution de la navigation / d'un menu ajouté
Mis à jour par Frédéric Péters il y a presque 6 ans
- Lié à Development #24239: Réduire le nombre de requêtes sur les cellules ajouté
Mis à jour par Christophe Siraut il y a presque 6 ans
et c'est 89 requêtes SQL.
D'accord. (le nombre "150" provient du profiling qui dévoile 176 appels à la méthode 'execute' de 'psycopg2._psycopg.cursor')
Mis à jour par Frédéric Péters il y a presque 6 ans
Pour fermer le ticket, les modifications étant désormais déployées,
Évaluation rapide via prometheus, sur le SaaS de prod :
sum(rate(django_http_requests_times_by_host_view_status_method_sum{method="GET",view="combo.public.views.page",status="200",instance="portail-citoyen-publik.entrouvert.com:443"}[60m])) / sum(rate(django_http_requests_times_by_host_view_status_method_count{method="GET",view="combo.public.views.page",status="200",instance="portail-citoyen-publik.entrouvert.com:443"}[60m]))
(prometheus est en GMT, la chute correspond bien à la mise à jour à minuit)