Estoy usando pgrouting en una base de datos postgis creada a través de osm2pgrouting. Funciona muy bien en un conjunto de datos limitado (3.5k formas, todas las rutas A * más cortas buscan <20 ms).
Sin embargo, desde que importé un cuadro delimitador más grande (122k formas) desde europe.osm, el rendimiento bajó mucho (un camino más corto cuesta alrededor de 900ms).
Creo que usar A * la mayoría de esos bordes nunca serán visitados ya que están fuera del camino.
Lo que he hecho hasta ahora en un intento de mejorar la velocidad:
- Poner un índice en la columna de geometría (sin efecto notable)
- Aumenté mi memoria de 8GB a 16GB
- Cambie la configuración de memoria postgresql (shared_buffers, efectivo_caché_tamaño) de (128MB, 128MB) a (1GB, 2GB) (sin efecto notable)
Tengo la sensación de que la mayor parte del trabajo se está realizando en la biblioteca C Boost donde se está haciendo el gráfico, por lo que optimizar postgresql no me dará resultados mucho mejores. A medida que hago pequeños cambios en el conjunto de filas que selecciono para A * para cada búsqueda, tengo un poco de miedo de que la biblioteca de impulso no pueda almacenar en caché mi gráfico y tenga que reconstruir todos los 122k bordes cada vez (aunque solo usará un muy subconjunto limitado de cada consulta). Y no tengo idea de cuánto se gasta haciendo eso en comparación con la búsqueda de ruta más corta real.
¿Alguno de ustedes usa pgrouting en un conjunto de datos OSM de 122k o más? ¿Qué rendimiento debo esperar? ¿Qué ajustes afectan más el rendimiento?