मैं osm2pgrout के माध्यम से बनाए गए पोस्टगिस डेटाबेस पर pgrout का उपयोग कर रहा हूं। यह एक सीमित डाटासेट (3.5k तरीके, सभी सबसे छोटे पथ A * खोजों <20 ms) पर बहुत अच्छा प्रदर्शन करता है।
हालाँकि जब से मैंने यूरोप से एक बड़ा बाउंडिंग बॉक्स (122k तरीके) आयात किया है। प्रदर्शन बहुत नीचे चला गया (लगभग 900ms में सबसे छोटी पथ लागत)।
मुझे लगता है कि ए * का उपयोग करते हुए उन किनारों में से अधिकांश का कभी भी दौरा नहीं किया जाएगा क्योंकि वे रास्ते से बाहर हैं।
गति में सुधार के प्रयास में मैंने अब तक क्या किया है:
- ज्योमेट्री कॉलम पर एक इंडेक्स लगाएं (ध्यान देने योग्य प्रभाव नहीं)
- मेरी मेमोरी को 8GB से बढ़ाकर 16GB कर दिया
- (128 जीबी, 128 एमबी) से (1 जीबी, 2 जीबी) (कोई ध्यान देने योग्य प्रभाव) से पोस्टग्रैस्क्ल मेमोरी सेटिंग्स (शेयर्ड_बफर्स, प्रभावी_कैश_साइज) बदलें।
मुझे लग रहा है कि ज्यादातर काम सी बूस्ट लाइब्रेरी में हो रहा है, जहां ग्राफ बनाया जा रहा है, इसलिए पोस्टग्रैसक्लिप का अनुकूलन मुझे ज्यादा बेहतर परिणाम नहीं देगा। जैसा कि मैं प्रत्येक खोज के लिए A * के लिए मेरे द्वारा चुनी गई पंक्तियों के सेट में मामूली बदलाव करता हूं, मुझे थोड़ा डर लगता है कि बूस्ट लाइब्रेरी मेरे ग्राफ़ को कैश नहीं कर सकती है और हर बार सभी 122k किनारों का पुनर्निर्माण करना होगा (भले ही यह केवल एक बहुत उपयोग करेगा सीमित सबसेट हर क्वेरी)। और मुझे पता नहीं है कि वास्तविक लघु पथ खोज की तुलना में कितना खर्च किया जाता है।
क्या आप में से कोई भी 122k या उससे अधिक OSM डेटासेट पर pgrout का उपयोग करता है? मुझे किस प्रदर्शन की उम्मीद करनी चाहिए? कौन सी सेटिंग्स प्रदर्शन को सबसे अधिक प्रभावित करती हैं?