You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
L'Agence Régionale de la Biodiversité en île de France m'a fait remarquer de grosses lenteurs sur la vue gn_synthese.v_area_taxon qui met plus de 30 secondes à s'exécuter. Cette vue est utilisée par gn_synthese.v_color_taxon_area et notamment par la route api/synthese/color_taxon.
Comme cette route est utilisée par occtax-mobile, nous avons dû en urgence transformer cette vue en vue materialisée mais c'est juste une réparation temporaire. (PnX-SI/gn_mobile_occtax#232)
J'ai essayé de transformer la requête pour par exemple sélectionner toutes les mailles activées pour réduire le JOIN mais cela n'améliore les performances qu'à partir d'un grand nombre de données et que de quelques secondes. En rajoutant des index cela n'aide pas grandement non plus...
J'ai l'impression que c'est le JOIN sur cor_area_synthese qui prend beaucoup de temps mais également le GROUP BY qui semble faire qu'un LIMIT ne permet pas d'énormément réduire le temps de la requête...
La base contient 3 millions d'obs ce qui ne semble pas énorme donc peut-être que ça vient de la base. Pensez-vous qu'un Vaccum analyse permettrait de résoudre un peu le problème ?
Si vous avez d'autres solutions/idées je suis preneur !
Merci beaucoup !
L'analyse de postgres :
Proposition de requête mais les perfs sont pas nettement mieux :
WITH occtax_areas AS (
SELECT
id_area
FROMref_geo.l_areas la
JOINref_geo.bib_areas_types bat ONbat.id_type=la.id_typeWHERE
la."enable"= TRUE
ANDbat.type_code= (
SELECTtp.parameter_valueFROMgn_commons.t_parameters tp
WHEREtp.parameter_name='occtaxmobile_area_type'LIMIT1))
SELECTs.cd_nom,
c.id_area,
count(s.id_synthese) AS nb_obs,
max(s.date_min) AS last_date
FROMgn_synthese.synthese s
JOINgn_synthese.cor_area_synthese c ONs.id_synthese=c.id_syntheseJOIN occtax_areas ONocctax_areas.id_area=c.id_areaGROUP BYc.id_area,
s.cd_nom;
Avec un index sur le enable :
CREATEINDEXONref_geo.l_areas((1)) WHERE"enable";
The text was updated successfully, but these errors were encountered:
Au départ, c'était stocké dans une table alimentée par un trigger, mais c'était lourd donc on a souhaité basculer sur une vue matérialisée.
Après tests et pour éviter un décalage d'infos, on est partie sur une vue.
Voir #997
Aussi discuté sur #617
Il faut que le type de zonage utilisé soit adapté à la taille du territoire et au nombre de taxons pour que le volume de données à récupérer soit viable.
Il me semble d'ailleurs que par défaut, dans GeoNature, le paramètre occtaxmobile_area_type est sur les M5 (mailles de 5km), alors que dans Occtax-mobile le paramètre code_area_type est suggéré 'ou pas défaut ?) sur les M1 (mailles de 1 km).
Il y a peut-être un truc à remettre en cohérence.
Mais c'est sur que sur un grand territoire avec beaucoup de taxons, les mailles de 1km c'est bien trop fin comme info. Il faut passer sur les mailles 5, ou 10, voire d'autres zonages plus grands (plus grandes mailles, communes, départements...).
En effet, c'est un petit territoire (île de France) et le paramètre occtaxmobile_area_type est à M5 mais même à M10 la requête est lente (trentaine de secondes).
Donc je me pose toujours la question de la performance de cette requête ou de la base de données en question...
Salut !
L'Agence Régionale de la Biodiversité en île de France m'a fait remarquer de grosses lenteurs sur la vue
gn_synthese.v_area_taxon
qui met plus de 30 secondes à s'exécuter. Cette vue est utilisée pargn_synthese.v_color_taxon_area
et notamment par la routeapi/synthese/color_taxon
.Comme cette route est utilisée par occtax-mobile, nous avons dû en urgence transformer cette vue en vue materialisée mais c'est juste une réparation temporaire. (PnX-SI/gn_mobile_occtax#232)
J'ai essayé de transformer la requête pour par exemple sélectionner toutes les mailles activées pour réduire le
JOIN
mais cela n'améliore les performances qu'à partir d'un grand nombre de données et que de quelques secondes. En rajoutant des index cela n'aide pas grandement non plus...J'ai l'impression que c'est le
JOIN
surcor_area_synthese
qui prend beaucoup de temps mais également leGROUP BY
qui semble faire qu'unLIMIT
ne permet pas d'énormément réduire le temps de la requête...La base contient 3 millions d'obs ce qui ne semble pas énorme donc peut-être que ça vient de la base. Pensez-vous qu'un Vaccum analyse permettrait de résoudre un peu le problème ?
Si vous avez d'autres solutions/idées je suis preneur !
Merci beaucoup !
L'analyse de postgres :
Proposition de requête mais les perfs sont pas nettement mieux :
Avec un index sur le
enable
:The text was updated successfully, but these errors were encountered: