Ich habe den deutschen OSM-Datensatz mit osm2po 4.7.7 in die pgrouting-Datenbank geladen. Alles funktioniert gut Ich habe osm2po über seine Konfiguration eingerichtet und es funktioniert wie ein Zauber durch seinen Java-Teil.
Ich hatte die Tabelle * _2po_4pgr ohne Probleme importiert. Sogar die * 2po_v-Tabelle wird importiert, obwohl ich die Beziehung dieser Tabelle nicht vollständig verstehe.
Ich habe die Funktion pgr_createTopology ausgeführt, die eine ganze Weile (12000 Sekunden) ausgeführt wurde, während alle 6-m-Kanten berechnet wurden. Ich dachte, das würde den Deal machen, aber es ist immer noch unerträglich langsam.
Ich würde gerne wissen, ob ich etwas vergessen habe. Ich dachte daran, pgRouting anstelle der Java-Bibliothek zu verwenden, aber im Moment ist es in Bezug auf die Leistung nur aus Vergleichsgründen.
quelle
Antworten:
Das Problem mit der Leistung von pgRouting scheint zu sein, dass neue pgr_astar und pgr_dijkstra das gesamte Diagramm verwenden (was eine Lösung garantiert, wenn es eines gibt). Eine einfache Lösung, um eine bessere Leistung zu erzielen, besteht darin, das verwendete Diagramm auf einen kleineren Bereich zu beschränken. Es hat seine eigenen Probleme, wie es manchmal Diagramme erstellen kann, die nicht gelöst werden können
Erstellt BBOX über der Quell- und Zielsammlung und erweitert sie um 0,1 Grad. Anschließend wird dieselbe Abfrage verwendet, um die Diagrammgröße in der Abfrage pgr_ zu begrenzen
Dijkstra von 1,2 s bis ~ 65 ms
A * von 2s bis ~ 50ms
osm2po wurde verwendet, um Daten (spätestens in Finnland) in die Postgis-Tabelle zu importieren. Hauptindex zur Spalte geom_way hinzugefügt und vollständiger Vakuumanalyselauf für die Datenbank. gemeinsamer Speicher 1G. Workmem 512M
quelle
Ich kam schließlich zu dem Schluss, dass es am besten ist, das gesamte Diagramm (einschließlich der Indizes) in einem separaten Tabellenbereich abzulegen, der sich mithilfe einer Ramdisk permanent im Speicher befindet.
Zum Einrichten der Ramdisk unter Ubuntu 13.04 habe ich die folgenden Anweisungen verwendet und muss sagen, dass sie ziemlich gut funktioniert (sie enthält Anweisungen zum erneuten Laden der Daten in den Speicher nach einem Neustart / Neustart).
Nächste Woche werde ich neue SSDs (1 GB / s gelesen) in die Hand nehmen und versuchen, die Leistung zu vergleichen.
Soweit ich sehe, ist dies die einzige Lösung, um ein Diagramm mit mehr als 1 Million Zeilen dauerhaft zugänglich zu halten, da dort fortlaufend zufällige Lesevorgänge stattfinden.
quelle
Verwenden Sie dieses Handbuch , um Indizes für eine räumliche Datenbank einzurichten. Hier ist der Kern davon:
Für meine _4pgr- und _vertex-Tabellen hatten nur die Quell- und Zielspalten nach dem Import Indizes (osm2po-core-5.1.0).
quelle