Tôi đang sử dụng pgrouting trên cơ sở dữ liệu postgis được tạo thông qua osm2pgrouting. Nó thực hiện rất tốt trên một tập dữ liệu giới hạn (3,5k cách, tất cả các đường dẫn ngắn nhất A * tìm kiếm <20 ms).
Tuy nhiên, vì tôi đã nhập một hộp giới hạn lớn hơn (122 nghìn cách) từ europe.osm, hiệu suất đã giảm đi rất nhiều (một con đường ngắn nhất có giá khoảng 900ms).
Tôi sẽ nghĩ rằng việc sử dụng A * hầu hết các cạnh đó sẽ không bao giờ được truy cập khi chúng ở ngoài đường.
Những gì tôi đã làm cho đến nay trong một nỗ lực để cải thiện tốc độ:
- Đặt một chỉ mục trên cột hình học (không có hiệu ứng đáng chú ý)
- Tăng bộ nhớ của tôi từ 8GB lên 16GB
- Thay đổi cài đặt bộ nhớ postgresql (shared_buffers, effect_cache_size) từ (128MB, 128MB) thành (1GB, 2GB) (không có hiệu ứng đáng chú ý)
Tôi có cảm giác rằng hầu hết các công việc đang được thực hiện trong thư viện C Boost, nơi đồ thị đang được thực hiện để tối ưu hóa postgresql sẽ không cho tôi kết quả tốt hơn nhiều. Khi tôi thực hiện các thay đổi nhỏ đối với nhóm hàng tôi chọn cho A * cho mỗi tìm kiếm, tôi hơi sợ rằng thư viện boost không thể lưu trữ biểu đồ của tôi và phải xây dựng lại tất cả các cạnh 122k mỗi lần (mặc dù nó sẽ chỉ sử dụng rất tập hợp con giới hạn mọi truy vấn). Và tôi không biết bao nhiêu chi tiêu để làm điều đó so với tìm kiếm con đường ngắn nhất thực tế.
Có ai trong số các bạn sử dụng pgrouting trên bộ dữ liệu OSM 122k trở lên không? Tôi nên mong đợi hiệu suất nào? Những cài đặt nào ảnh hưởng đến hiệu suất nhất?