Development #34097
optimiser les requêtes sur les sessions
0%
Description
À analyser les requêtes vers la db, beaucoup beaucoup de SELECT id, session_data FROM sessions
, pour la mention sur les objets "verrouillés".
Comme ceux-ci sont de toute façon libérés après 30 minutes, on devrait pouvoir limiter la requête aux sessions qui ont été modifiées dans la demi-heure.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 5 ans
- Fichier 0001-misc-limit-query-to-recent-sessions-when-checking-fo.patch 0001-misc-limit-query-to-recent-sessions-when-checking-fo.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Pas de test additionnel mais à coup de pdb en local j'ai vérifié que jamais les tests de backoffice ne faisait un select() sans clause where.
Mis à jour par Thomas Noël il y a presque 5 ans
A priori do_session_table va juste ajouter une colonne last_update_time avec des NULL dedans pour les sessions existantes... ça va pas marcher ensuite j'ai l'impression, le [GreaterOrEqual('last_update_time', ...
Aussi, il faut modifier get_sessions_with_visited_object dans sql.py pour ne prendre en compte que les session récentes.
(Enfin, j'ai l'impression que notre clean_session ne nettoie rien en mode SQL, c'est un autre sujet mais ça doit aussi être en rapport avec ce bogue de "trop de sessions")
Mis à jour par Frédéric Péters il y a presque 5 ans
A priori do_session_table va juste ajouter une colonne last_update_time avec des NULL dedans pour les sessions existantes... ça va pas marcher ensuite j'ai l'impression, le [GreaterOrEqual('last_update_time', ...
Ça marchera assez rapidement le lendemain; je n'étais pas tellement motivé à taper now comme valeur par défaut mais je peux faire ça.
Aussi, il faut modifier get_sessions_with_visited_object dans sql.py pour ne prendre en compte que les session récentes.
Il y a déjà un WHERE qui fait que cette requête est limitée dans ce qu'elle retourne, mais oui.
(Enfin, j'ai l'impression que notre clean_session ne nettoie rien en mode SQL, c'est un autre sujet mais ça doit aussi être en rapport avec ce bogue de "trop de sessions")
Vu par ailleurs, mais ça fonctionne, il y a juste un empilage de couches d'abstractions, de quixote vers un fonctionnement type dictionnaire, vers notre storage.py vers notre sql.py.
Mis à jour par Frédéric Péters il y a presque 5 ans
- Fichier 0001-misc-limit-query-to-recent-sessions-when-checking-fo.patch 0001-misc-limit-query-to-recent-sessions-when-checking-fo.patch ajouté
Voilà avec les deux modifications.
Mis à jour par Thomas Noël il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Impeccable.
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 73958864d1fa30677d3bc27498513d299e65e509 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Tue Jun 18 10:33:38 2019 +0200 misc: limit query to recent sessions when checking for locked objects (#34097)
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: limit query to recent sessions when checking for locked objects (#34097)