#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: 24
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: 521
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é
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
Hors ligne
#5 Thu 04 April 2024 17:06
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1146
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
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é
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: 1146
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