pgRouting 성능의 문제는 새로운 pgr_astar 및 pgr_dijkstra가 전체 그래프를 사용하는 것 같습니다 (있는 경우 솔루션을 보장 함). 더 나은 성능을 얻는 간단한 솔루션은 사용 된 그래프를 더 작은 영역으로 제한하는 것입니다. 때로는 해결할 수없는 그래프를 생성 할 수있는 것처럼 자체 문제가 있습니다.
(SELECT ST_Expand(ST_Extent(geom_way),0.1) as box FROM hh_2po_4pgr as l1 WHERE l1.source =7 OR l1.target = 12)
소스 및 대상 컬렉션에 대해 BBOX를 만들고 0.1도 확장 한 다음 동일한 쿼리를 사용하여 pgr_ query에서 그래프 크기를 제한합니다.
1.2에서 ~ 65ms의 Dijkstra
SELECT seq, id1 AS node, id2 AS edge, g.geom_way as the_geom
FROM pgr_dijkstra(
'SELECT id, source, target, cost FROM hh_2po_4pgr as r,
(SELECT ST_Expand(ST_Extent(geom_way),0.1) as box FROM hh_2po_4pgr as l1 WHERE l1.source =7 OR l1.target = 12) as box
WHERE r.geom_way && box.box',
7, 12, false, false
) as r INNER JOIN hh_2po_4pgr as g ON r.id2 = g.id ;
2 초 ~ ~ 50ms의 A *
SELECT seq, id1 AS node, id2 AS edge, cost
FROM pgr_astar(
'SELECT id, source, target, cost, x1,y1,x2,y2 FROM hh_2po_4pgr as r,
(SELECT ST_Expand(ST_Extent(geom_way),0.1) as box FROM hh_2po_4pgr as l1 WHERE l1.source =7 OR l1.target = 12) as box
WHERE r.geom_way && box.box',
7, 12, false, false
);
osm2po를 사용하여 postgis 테이블로 데이터 (최근 최신)를 가져옵니다. geom_way 컬럼에 추가 된 gist 색인 및 데이터베이스에 대한 전체 진공 분석 실행. 공유 메모리 1G. 작업장 512M