#63 Problème de performances pour récupérer le nombre de commentaires d'un thread

Open
opened 9 months ago by Darks · 3 comments
Darks commented 9 months ago
Owner

Récupérer le nombre de commentaires d'un thread (thread.comments.count()) est très lent.

Sur certaines pages, on peut arriver à des temps de chargement dépassant la seconde, quand bien même on a pas tant de topics que ça… Exemple : https://v5.planet-casio.com/forum/discussion/ (~1,5 s de temps de génération)

Il faut trouver un moyen de corriger le problème, parce que c'est un sacré bottleneck. On peut éventuellement stocker le nombre de commentaires en tant qu'attribut du Thread, mais je trouve ça bof.

J'en profite pour partager la doc sur le profilage dans SQLAlchemy, qui pourra être utile à l'occasion.

Récupérer le nombre de commentaires d'un thread (`thread.comments.count()`) est très lent. Sur certaines pages, on peut arriver à des temps de chargement dépassant la seconde, quand bien même on a pas tant de topics que ça… Exemple : https://v5.planet-casio.com/forum/discussion/ (~1,5 s de temps de génération) Il faut trouver un moyen de corriger le problème, parce que c'est un sacré bottleneck. On peut éventuellement stocker le nombre de commentaires en tant qu'attribut du `Thread`, mais je trouve ça bof. J'en profite pour partager [la doc sur le profilage](https://docs.sqlalchemy.org/en/13/faq/performance.html) dans SQLAlchemy, qui pourra être utile à l'occasion.
Darks added the
help wanted
label 9 months ago
Darks added the
performance
label 9 months ago
Darks commented 9 months ago
Poster
Owner

Bon, après une fois que la pagination (#64) sera mis en place, le problème sera peut-être moins critique. J'espère la complexité par Thread est en O(1), ça serait pas mal. Normalement oui puisque SQLAlchemy doit convertir le .count() en count(*) FROM table WHERE …

Bon, après une fois que la pagination (#64) sera mis en place, le problème sera peut-être moins critique. J'espère la complexité par `Thread` est en `O(1)`, ça serait pas mal. Normalement oui puisque SQLAlchemy doit convertir le `.count()` en `count(*) FROM table WHERE …`
Darks commented 9 months ago
Poster
Owner

Ça peut aussi venir d'un index manquant dans la BDD. On n'explicite pas l'index des commentaires par thread, donc si SQLAlchemy ne le fait pas il est possible que ça vienne de là.

Ça peut aussi venir d'un index manquant dans la BDD. On n'explicite pas l'index des commentaires par thread, donc si SQLAlchemy ne le fait pas il est possible que ça vienne de là.
Eragon commented 7 months ago
Collaborator

Actuellement la page est générée en 0.37742s .
Ça reste beaucoup mais c'est bien plus acceptable que les 1.5s d'origine.
Quels sont les modifications apportés autres que la pagination ?

Actuellement la page est générée en 0.37742s . Ça reste beaucoup mais c'est bien plus acceptable que les 1.5s d'origine. Quels sont les modifications apportés autres que la pagination ?
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.