Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oubliĂ© ?

#1 Wed 03 April 2024 17:39

yaks48
Participant occasionnel
Date d'inscription: 3 Nov 2022
Messages: 17

Gestion BDD - grosses lenteurs PostGIS

Bonjour,

Je travaille avec une BDD contenant des couches dont certaines peuvent ĂȘtre volumineuses (type RPG, cours d'eau...), sous QGIS via connexion PostGIS.

Les couches sont stockées sur serveur distant, chaque utilisateur se connecte donc via l'adresse IP, avec une bonne connexion.

NĂ©anmoins, j'ai des lenteurs d'affichage des diffĂ©rentes couches, mĂȘme des plus lĂ©gĂšres. J'ai testĂ© diffĂ©rentes solutions trouvĂ©es sur le forum :
- attribuer un index spatial;
- Cocher la case "Ne pas résoudre le type pour les géométries non restreintes (GEOMETRY)" dans les informations de connexion sur QGIS.

Mais le problĂšme de lenteur persiste : avez-vous d'autres solutions svp ?

Merci d'avance.

Hors ligne

 

#2 Thu 04 April 2024 09:00

bbk9
Participant occasionnel
Date d'inscription: 7 Jan 2022
Messages: 32

Re: Gestion BDD - grosses lenteurs PostGIS

Bonjour,

un coup de vacuum ?

Est-ce que vous avez contrĂŽlĂ© cĂŽtĂ© serveur ce qu’il se passe pendant que les donnĂ©es sont requĂȘtĂ©es  (Ram, cpu...) ?

Hors ligne

 

#3 Thu 04 April 2024 09:28

JRM
Participant assidu
Lieu: Arras
Date d'inscription: 15 Apr 2009
Messages: 523

Re: Gestion BDD - grosses lenteurs PostGIS

QGIS dispose d'un panneau de dĂ©bogage qui permet d'enregistrer les requĂȘtes Ă©mises pour obtenir les donnĂ©es, avec le temps d’exĂ©cution. Vous pouvez rĂ©cupĂ©rer dans un logiciel comme pgadmin ou dbeaver le plan de requete suivi par postgresql avec un explain query (texte ou graphique) et ainsi identifier oĂč le temps est passĂ© (une mauvaise jointure ? un filtre non indexĂ© ? des gĂ©ometries avec plein de vertices qui ne peuvent pas bĂ©nĂ©ficier de l'index spatial lors d'un zoom ? etc.)

Hors ligne

 

#4 Thu 04 April 2024 09:56

yaks48
Participant occasionnel
Date d'inscription: 3 Nov 2022
Messages: 17

Re: Gestion BDD - grosses lenteurs PostGIS

Bonjour,
Merci pour vos réponses à tous les deux.
pour les solutions proposées :

un coup de vacuum ?


je viens d'essayer et ça n'a rien changé sad
 

Est-ce que vous avez contrĂŽlĂ© cĂŽtĂ© serveur ce qu’il se passe pendant que les donnĂ©es sont requĂȘtĂ©es  (Ram, cpu...) ?


je vais regarder cela, merci pour la piste.

QGIS dispose d'un panneau de dĂ©bogage qui permet d'enregistrer les requĂȘtes Ă©mises pour obtenir les donnĂ©es, avec le temps d’exĂ©cution. Vous pouvez rĂ©cupĂ©rer dans un logiciel comme pgadmin ou dbeaver le plan de requete suivi par postgresql avec un explain query (texte ou graphique) et ainsi identifier oĂč le temps est passĂ© (une mauvaise jointure ? un filtre non indexĂ© ? des gĂ©ometries avec plein de vertices qui ne peuvent pas bĂ©nĂ©ficier de l'index spatial lors d'un zoom ? etc.)


j'ai essayé de regarder et le temps passé sur une couche relativement basique (couche des EPCI à l'échelle métropole) et il se trouve trÚs majoritairement sur :

Code:

FETCH FORWARD 2000 FROM qgis_16
    Fournisseur: postgres
    URI: dbname='[i]nom de ma database[/i]' host=[i]adresse IP de mon serveur[/i] port=5432
    Commencé le: 2024-04-04T09:48:14.014
    Initiateur: QgsPostgresFeatureIterator
    Emplacement: src\providers\postgres\qgspostgresfeatureiterator.cpp:296 (QgsPostgresFeatureIterator::fetchFeature)
    Nombre de lignes: 1181
    Temps total (ms): 47677

je ne connais pas assez en profondeur tout ce langage, y voyez-vous quelque chose de notable ?

Merci smile

Hors ligne

 

#5 Thu 04 April 2024 17:06

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1226

Re: Gestion BDD - grosses lenteurs PostGIS

Salut,

je ne connais pas assez en profondeur tout ce langage, y voyez-vous quelque chose de notable ?


votre couche contient apparemment 1181 lignes et prends 48 seconde Ă  ĂȘtre executĂ©e, ce qui parait anormal, Ă  moins que chaque ligne contienne vraiment beaucoup de donnĂ©es (nombre de colonne Ă©levĂ©, gĂ©ometrie trĂšs complexe).

Pour identifier le point d'Ă©tranglement, j'executerais une requĂȘte de type "select * from ma_couche_basique" (ou idĂ©alement la requĂȘte executĂ©e par QGIS) avec un client sql basique sur un des postes clients, et en local sur votre serveur pour voir si j'obtiens le mĂȘme genre de performances.

Sinon, comme bbk9 le suggĂšre, peut ĂȘtre que votre serveur est surchargĂ© (cpu, ram, disque, interface rĂ©seau).

Hors ligne

 

#6 Fri 05 April 2024 09:25

yaks48
Participant occasionnel
Date d'inscription: 3 Nov 2022
Messages: 17

Re: Gestion BDD - grosses lenteurs PostGIS

Bonjour,

votre couche contient apparemment 1181 lignes et prends 48 seconde Ă  ĂȘtre executĂ©e, ce qui parait anormal, Ă  moins que chaque ligne contienne vraiment beaucoup de donnĂ©es (nombre de colonne Ă©levĂ©, gĂ©ometrie trĂšs complexe).


pas spĂ©cialement de gĂ©omĂ©tries trĂšs complexes... il y a des grosses diffĂ©rences entre machines (pas moins puissantes, voire certaines qui sont exactement les mĂȘmes et de mĂȘme Ăąge, avec des versions diffĂ©rentes de QGIS...)
MĂȘme en localhost j'observe par contre une exĂ©cution lente de DB Manager par rapport Ă  il y a quelques mois.

Pour identifier le point d'Ă©tranglement, j'executerais une requĂȘte de type "select * from ma_couche_basique" (ou idĂ©alement la requĂȘte executĂ©e par QGIS) avec un client sql basique sur un des postes clients, et en local sur votre serveur pour voir si j'obtiens le mĂȘme genre de performances.


sur le serveur avec pgadmin 1'22'' pour exĂ©cuter la requĂȘte
sur QGIS avec DB Manager 1'23'' pour exĂ©cuter la requĂȘte

Sinon, comme bbk9 le suggĂšre, peut ĂȘtre que votre serveur est surchargĂ© (cpu, ram, disque, interface rĂ©seau).


comme j'en suis Ă  l'Ă©tape de test et de montage de la BDD, le serveur est loin d'ĂȘtre saturĂ©. j'ai vĂ©rifiĂ© avec mon collĂšgue informaticien, c'est un serveur de base de donnĂ©es, pas d'interface graphique, pas de limitation rĂ©seau, pas de saturation de RAM, je suis le seul Ă  l'utiliser et il n'y a que quelques couches sad

Merci pour vos réponses !

Hors ligne

 

#7 Tue 09 April 2024 09:51

yaks48
Participant occasionnel
Date d'inscription: 3 Nov 2022
Messages: 17

Re: Gestion BDD - grosses lenteurs PostGIS

Bonjour,
Dans les options de QGIS, j'ai coché la case "Faire se réaliser la simplification par le fournisseur de données lorsque c'est possible".
Maintenant, le chargement est quasiment instantané yikes
Est-ce que cela induit une grosse dégradation de la données, je n'ai pas l'impression, au visuel que cela change beaucoup de choses, savez-vous ce que cette option implique ?

Par contre, cela n'explique pas la diffĂ©rence notable de temps de chargement entre ma machine et les autres (mĂȘme rĂ©seau, mĂȘme Ăąge, mĂȘme modĂšle, les mĂȘmes extension activĂ©es, ...) Il y a une diffĂ©rence de l'ordre de x10 Ă  x15 poru le temps de chargement (sans l'option activĂ©e).

je continue mes tests avec d'autres couches plus lourdes.

Bonne journée.

Hors ligne

 

#8 Tue 09 April 2024 16:46

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1226

Re: Gestion BDD - grosses lenteurs PostGIS

Bonjour,
Dans les options de QGIS, j'ai coché la case "Faire se réaliser la simplification par le fournisseur de données lorsque c'est possible".
Maintenant, le chargement est quasiment instantané yikes
Est-ce que cela induit une grosse dégradation de la données, je n'ai pas l'impression, au visuel que cela change beaucoup de choses, savez-vous ce que cette option implique ?


La simplification se fait cotĂ© serveur, avec trĂšs certainement un appel Ă  la fonction st_simplify de postgis qui prend en argument une gĂ©ometrie et un seuil de tolĂ©rance. Sans cette option, la gĂ©ometrie d'origine est rapatriĂ©e par le rĂ©seau puis est simplifiĂ©e par Qgis avant d'ĂȘtre dessinĂ©e, ce qui peut ĂȘtre plus long, en fonction de la bande passante du rĂ©seau. En utilisant cette option, vous dĂ©portez toute fois la charge de simplification (ram & cpu) sur le serveur.

Je ne sais pas comment Qgis gĂšre çà (mĂȘme si ca serait possible de le vĂ©rifier : le code est ouvert), mais cela parait logique d'utiliser un "niveau de simplification" inversement proportionnel Ă  l'echelle de visualisation : plus on a "zoomĂ©" sur une portion de la carte, moins on a besoin de simplifier les geometries car il y en a thĂ©oriquement moins Ă  dessiner.

Je ne sais pas non plus si QGIS utilise les gĂ©ometries simplifiĂ©es uniquement pour le rendu, ou bien aussi pour les traitements. Dans le deuxieme cas, les rĂ©sultats des traitements sur les gĂ©ometries simplifĂ©es peuvent ĂȘtre diffĂ©rents de ceux rĂ©alisĂ©s sur les orginales : le processus de simplification rĂ©duit le nombre de point des gĂ©omĂ©tries en essayant d'en conserver la topologie. Les surfaces ne seront donc plus les mĂȘmes, la cohĂ©rence topologique de la couche peut Ă©galement changer.

[edit]correction coquille dernier paragraphe [/edit]

Dernière modification par tumasgiu (Fri 12 April 2024 17:45)

Hors ligne

 

#9 Thu 11 April 2024 11:45

yaks48
Participant occasionnel
Date d'inscription: 3 Nov 2022
Messages: 17

Re: Gestion BDD - grosses lenteurs PostGIS

Bonjour,
Merci pour votre réponse et les infos apportées.

Pour l'échelle de visualisation, on peut rentrer une échelle maximale au-dessus de laquelle le fournisseur de données ne simplifie pas.

Ainsi, pour des échelles dézoomées, par exemple pour des échelles plus petites que 1/300 000 j'applique la simplification.
Ca marche relativement bien pour des grosses entités (exemple avec les EPCI métropolitains). En revanche, si je veux faire une carte avec le RPG au 350 000Úme, QGIS n'affiche pas la carte.

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo