我在通过osm2pgrouting创建的postgis数据库上使用pgrouting。它在有限的数据集上表现出色(3.5k种方式,所有最短路径A *搜索均<20 ms)。
但是,由于我从Europe.osm导入了一个更大的边界框(122k方向),因此性能下降了很多(最短路径的成本约为900ms)。
我认为使用A *不会使这些边缘中的大多数受到干扰。
到目前为止,我为提高速度所做的工作:
- 在几何列上放置索引(无明显影响)
- 我的内存从8GB增加到16GB
- 将Postgresql内存设置(shared_buffers,effective_cache_size)从(128MB,128MB)更改为(1GB,2GB)(无明显效果)
我感觉大多数工作都在制作图形的C Boost库中完成,因此优化postgresql不会给我带来更好的结果。当我对每次搜索选择的A *行集合进行细微更改时,我有点担心boost库无法缓存我的图形,并且每次都必须重建所有122k边(即使它只会使用非常每个查询的限制子集)。而且我不知道与实际最短路径搜索相比,花了多少钱。
你们中有人在122k或更高版本的OSM数据集上使用注浆吗?我应该期待什么表现?哪些设置对性能的影响最大?