osm2pgroutingで作成されたpostgisデータベースでpgroutingを使用しています。限られたデータセットで非常に優れたパフォーマンスを発揮します(3.5kの方法、20ミリ秒未満のすべての最短パスA *検索)。
ただし、europe.osmからより大きなバウンディングボックス(122kウェイ)をインポートしたため、パフォーマンスが大幅に低下しました(最短パスのコストは約900ミリ秒)。
A *を使用すると、これらのエッジのほとんどは、邪魔にならないため、決してアクセスされないと思います。
速度を改善するためにこれまでに行ったこと:
- ジオメトリ列にインデックスを配置します(顕著な効果はありません)
- メモリーを8GBから16GBに増やしました
- postgresqlのメモリ設定(shared_buffers、effective_cache_size)を(128MB、128MB)から(1GB、2GB)に変更します(顕著な効果はありません)
ほとんどの作業はグラフが作成されているC Boostライブラリで行われているので、postgresqlを最適化しても良い結果が得られないと感じています。検索ごとにA *に選択した行のセットに小さな変更を加えると、ブーストライブラリはグラフをキャッシュできず、毎回122kのエッジをすべて再構築する必要があるのではないかと心配しています(非常にクエリごとの限定サブセット)。そして、実際の最短パス検索と比較して、それを行うのにどれだけの費用がかかるかわかりません。
122k以上のOSMデータセットでpgroutingを使用している人はいますか?どのようなパフォーマンスが期待できますか?どの設定がパフォーマンスに最も影響しますか?