Ich verwende pgrouting für eine Postgis-Datenbank, die mit osm2pgrouting erstellt wurde. Die Leistung ist bei einem begrenzten Datensatz sehr gut (3,5 k-Wege, alle A * -Suche mit kürzestem Pfad <20 ms).
Da ich jedoch eine größere Bounding Box (122k-Wege) aus europe.osm importiert habe, ging die Leistung stark zurück (ein kürzester Pfad kostet etwa 900 ms).
Ich würde denken, dass mit A * die meisten dieser Kanten nie besucht werden, da sie aus dem Weg sind.
Was ich bisher getan habe, um die Geschwindigkeit zu verbessern:
- Fügen Sie der Geometriespalte einen Index hinzu (kein erkennbarer Effekt)
- Mein Speicher wurde von 8 GB auf 16 GB erhöht
- Ändern Sie die Postgresql-Speichereinstellungen (shared_buffers, effective_cache_size) von (128 MB, 128 MB) auf (1 GB, 2 GB) (kein erkennbarer Effekt).
Ich habe das Gefühl, dass die meiste Arbeit in der C-Boost-Bibliothek ausgeführt wird, in der das Diagramm erstellt wird, sodass die Optimierung von postgresql keine besseren Ergebnisse liefert. Da ich geringfügige Änderungen an der Reihe von Zeilen vornehme, die ich für A * bei jeder Suche auswähle, habe ich ein wenig Angst, dass die Boost-Bibliothek mein Diagramm nicht zwischenspeichern kann und jedes Mal alle 122k-Kanten neu erstellen muss (auch wenn es nur sehr viele verwendet begrenzte Teilmenge jeder Abfrage). Und ich habe keine Ahnung, wie viel dafür ausgegeben wird, verglichen mit der tatsächlichen Suche nach kürzesten Wegen.
Verwendet einer von Ihnen Pgrouting für ein OSM-Dataset mit 122 KB oder mehr? Mit welcher Leistung sollte ich rechnen? Welche Einstellungen wirken sich am meisten auf die Leistung aus?