osm2pgrouting을 통해 생성 된 postgis 데이터베이스에서 pgrouting을 사용하고 있습니다. 제한된 데이터 세트 (3.5k 방식, 모든 최단 경로 A * 검색 <20ms)에서 매우 우수합니다.
그러나 europe.osm에서 더 큰 경계 상자 (122k 방법)를 가져 오기 때문에 성능이 크게 떨어졌습니다 (최소 경로 비용은 약 900ms).
나는 A *를 사용하면 대부분의 가장자리가 방해가되지 않으므로 방문하지 않을 것이라고 생각합니다.
속도를 향상시키기 위해 지금까지 한 일 :
- 지오메트리 열에 인덱스를 넣습니다 (눈에 띄는 효과 없음)
- 메모리가 8GB에서 16GB로 증가했습니다.
- postgresql 메모리 설정 (shared_buffers, effective_cache_size)을 (128MB, 128MB)에서 (1GB, 2GB)로 변경하십시오 (눈에 띄는 효과 없음)
나는 대부분의 작업이 그래프가 만들어지는 C Boost 라이브러리에서 수행되고 postgresql을 최적화해도 더 나은 결과를 얻지 못한다고 생각합니다. 모든 검색에 대해 A *에 대해 선택한 행 집합을 약간 변경하면 부스트 라이브러리가 그래프를 캐시 할 수 없으며 매번 122k 가장자리를 모두 다시 작성해야한다고 두려워합니다. 쿼리마다 제한된 하위 집합). 그리고 실제로 가장 짧은 경로 검색과 비교하여 얼마나 많은 비용을 소비하는지 알 수 없습니다.
122k 이상의 OSM 데이터 세트에서 그라우팅을 사용하는 사람이 있습니까? 어떤 성능을 기대해야합니까? 어떤 설정이 성능에 가장 영향을 줍니까?