Osm2pgrouting ile oluşturulan bir postgis veritabanı üzerinde pgrouting kullanıyorum. Sınırlı bir veri kümesinde çok iyi performans gösterir (3.5k yolu, tümü kısa A * araması <20 msn).
Ancak europe.osm'den daha büyük bir sınırlama kutusu (122k yol) ithal ettiğimden bu yana performans çok azaldı (en kısa yol 900ms civarında).
A * 'yı kullanmanın, bu kenarların çoğunun eskiden olduğu gibi hiçbir zaman ziyaret edilmeyeceğini düşünüyorum.
Hızı arttırmak için şu ana kadar neler yaptım:
- Geometri sütununa bir dizin koyun (fark edilebilir bir etki yok)
- Hafızamı 8GB'tan 16GB'a çıkardım
- Postgresql hafıza ayarlarını (shared_buffers, effect_cache_size) (128MB, 128MB) 'den (1GB, 2GB)' a (fark edilebilir efekt yok) değiştirin
Çalışmanın çoğunun grafiğin yapıldığı C Boost kütüphanesinde yapıldığı hissine sahibim, böylece postgresql'i optimize etmek bana çok daha iyi sonuçlar vermeyecek. Her arama için A * için seçtiğim satır kümesinde küçük değişiklikler yaptığım için, artırma kütüphanesinin grafiğimi önbelleğe alamaması ve her seferinde tüm 122k kenarlarını yeniden oluşturması gerektiğinden korkuyorum (yalnızca Her sorgu sınırlı altküme). Ve bunun için en kısa yol araştırmasına göre ne kadar harcandığını bilmiyorum.
Herhangi biriniz 122k veya daha büyük bir OSM veri setinde pgrouting kullanıyor mu? Hangi performansı beklemeliyim? Hangi ayarlar performansı en çok etkiler?