Sto usando pgrouting su un database postgis creato tramite osm2pgrouting. Funziona molto bene su un set di dati limitato (3,5k vie, tutte le ricerche A * del percorso più breve <20 ms).
Tuttavia da quando ho importato un box di delimitazione più grande (122k vie) da europe.osm, le prestazioni sono diminuite molto (un percorso più breve costa circa 900ms).
Penserei che usando A * la maggior parte di quei bordi non sarà mai visitata perché sono fuori mano.
Quello che ho fatto finora nel tentativo di migliorare la velocità:
- Inserisci un indice sulla colonna della geometria (nessun effetto evidente)
- Aumentata la mia memoria da 8 GB a 16 GB
- Modifica le impostazioni di memoria di postgresql (shared_buffers, actual_cache_size) da (128 MB, 128 MB) a (1 GB, 2 GB) (nessun effetto evidente)
Ho la sensazione che la maggior parte del lavoro venga svolto nella libreria C Boost, dove il grafico viene creato, quindi l'ottimizzazione di postgresql non mi darà risultati molto migliori. Mentre faccio piccole modifiche all'insieme di righe che seleziono per A * per ogni ricerca, ho un po 'paura che la libreria boost non possa memorizzare nella cache il mio grafico e debba ricostruire tutti i 122k edge ogni volta (anche se utilizzerà solo sottoinsieme limitato ogni query). E non ho idea di quanto viene speso per farlo rispetto all'effettiva ricerca del percorso più breve.
Qualcuno di voi usa pgrouting su un set di dati OSM 122k o superiore? Quali prestazioni dovrei aspettarmi? Quali impostazioni influiscono maggiormente sulle prestazioni?