Calculateur : charger les busy times pour l'ensemble des ranges d'une plage#6211
Open
francois-ferrandis wants to merge 5 commits intoproductionfrom
Open
Calculateur : charger les busy times pour l'ensemble des ranges d'une plage#6211francois-ferrandis wants to merge 5 commits intoproductionfrom
francois-ferrandis wants to merge 5 commits intoproductionfrom
Conversation
This reverts commit c5f08c5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Actuellement, dans le calculateur de créneaux, nous chargeons, pour chaque plage d'ouverture trouvée, nous chargeons depuis Postgres, pour chacune des occurrences de la plage de la semaine courante :
Cela signifie que, pour une plage ayant lieu chaque jour de la semaine, nous avons 5 occurrences (lun-mar-mer-jeu-ven), et donc nous faisons 5 fois les 3 appels ci-dessus. Si cette plage est découpé en matin / après-midi, on double encore le nombre d'itérations !
Cette PR propose plutôt de ne faire les 3 appels ci dessus qu'une seule fois, sur un seul range global qui couvre toutes les occurrences (dans l'exemple ci dessus, ce range global va du lundi matin au vendredi soir).
Cela va donc avoir pour effet de charger parfois des éléments qui sont en dehors des ranges, mais de réduire parfois considérablement le nombre de requêtes en base. Nous faisons le pari que cela nous fera globalement gagner en performance car la majorité des busytimes sont bel et bien contenus dans les ranges.
Ce changement est proposé dans un contexte dans lequel nous avons des soucis d’exhaustion de connection dans la pool, et nous suspectons très fortement l'usage de
load_asyncdans le calculator d'en être la cause. C'est donc la suite de #6095, #4725 et #4695.