मैं एक लंबे समय से चल रहे plpgsql संग्रहीत प्रक्रिया के प्रदर्शन में सुधार करने की कोशिश कर रहा हूं, लेकिन मुझे नहीं पता कि क्या, यदि कोई हो, प्रोफाइलिंग टूल उपलब्ध हैं। क्या कोई ऐसी प्रक्रिया को प्रोफाइल करने के बारे में सुझाव दे सकता है?plpgsql प्रक्रियाओं को कैसे प्रोफाइल करें
उत्तर
को clock_timestamp() सहित प्रक्रिया से कुछ बढ़ाएं ताकि यह देखने के लिए कि डेटाबेस समय व्यतीत करता है। और प्रक्रियाओं को यथासंभव सरल बनाएं।
क्या आप हमें एक उदाहरण दिखा सकते हैं?
साथ शुरू करने के लिए, आप पोस्टग्रेज़ लॉगफाइल में logging of all statements चालू कर सकते हैं। लॉग में प्रत्येक कथन के लिए रनटाइम होगा। इस तरह आप सबसे धीमे प्रश्नों की पहचान कर सकते हैं और उन्हें अनुकूलित करने का प्रयास कर सकते हैं।
लेकिन फ्रैंक की पोस्ट पर आपकी टिप्पणी पढ़ना मुझे लगता है कि लूपिंग आपकी समस्या है। लूपिंग से छुटकारा पाने की कोशिश करें और एक ही प्रश्न में सबकुछ करें। एक बयान जो बहुत सारी पंक्तियों को पढ़ता है, आमतौर पर कुछ पंक्तियों को पढ़ने वाले कई बयानों से अधिक कुशल होता है।
pg_stat_statements एक्सटेंशन (http://www.postgresql.org/docs/9.2/static/pgstatstatements.html) का उपयोग करने का प्रयास करें। यह सभी कथनों के लिए कॉल नंबर और कुल कॉल टाइम दिखा सकता है (plpgsql प्रक्रियाओं के भीतर उप-कथन सहित)।
वर्तमान में हम इस प्रश्न के लिए एक बेहतर जवाब के लिए देख रहे हैं, और इस उपकरण भर में ठोकर खाई है http://www.openscg.com/2015/02/postgresql-plpgsql-profiler/ पर होस्ट किया गया: https://bitbucket.org/openscg/plprofiler
यह आप देने के लिए आप के लिए क्या देख रहे हैं, कुल समय सहित का दावा समारोह की प्रत्येक पंक्ति पर खर्च किया। हमने अभी तक इसकी जांच नहीं की है, लेकिन लेखक के दावों के आधार पर, हम आशावादी हैं।
- 1. plpgsql
- 2. plpgsql
- 3. plpgsql: खंड
- 4. चांदी के आवेदन को कैसे प्रोफाइल करें?
- 5. ओपनएमपी बाधाओं को कैसे प्रोफाइल करें
- 6. Matlab प्रक्रियाओं को बेंचमार्क कैसे करें?
- 7. PostgreSQL डेटाबेस कैसे प्रोफाइल करें?
- 8. क्यूटीस्क्रिप्ट कोड कैसे प्रोफाइल करें?
- 9. plpgsql फ़ंक्शन तालिका (..)
- 10. हेरोकू को प्रोफाइल को कैसे दबाया जाए?
- 11. एएसपी.नेट में प्रोफाइल का उपयोग कैसे करें?
- 12. सी प्रोग्राम के मेमोरी उपयोग को कैसे प्रोफाइल करें
- 13. एंड्रॉइड में दो प्रक्रियाओं को डीबग कैसे करें?
- 14. MySQL: संग्रहित प्रक्रियाओं को परमाणु रूप से कैसे संशोधित करें?
- 15. यात्री/mod_rails प्रक्रियाओं की निगरानी कैसे करें?
- 16. मेवेन प्रोफाइल या वसंत प्रोफाइल?
- 17. सभी बाल प्रक्रियाओं को कैसे ढूंढें?
- 18. संग्रहित प्रक्रियाओं को नाम से कैसे ढूंढें?
- 19. मैं दो प्रक्रियाओं को सिंक्रनाइज़ कैसे करूं?
- 20. विशिष्ट समय पर एंड्रॉइड फोन प्रोफाइल मोड को आमंत्रित करें
- 21. gravatar प्रोफाइल
- 22. plpgsql: 2 आउट पैरामीटर के साथ फ़ंक्शन को कॉल करना
- 23. वीएस2012 प्रोफाइल प्रकाशित करें - एन्क्रिप्टेड पासवर्ड
- 24. प्रोविजनिंग प्रोफाइल को कॉन्फ़िगर करना
- 25. छवि में निर्मित रंग प्रोफाइल लागू करें
- 26. किसी पृष्ठ की प्रोफाइल तस्वीर प्राप्त करें
- 27. pseudo_encrypt() plpgsql में फ़ंक्शन जो बिगिन
- 28. आप समांतर पाइथन लिपि कैसे प्रोफाइल कर सकते हैं?
- 29. SQL संग्रहीत प्रक्रियाओं को चलाने की प्रगति को कैसे देखें?
- 30. सत्र कुकी साझा करने वाली क्रोम प्रक्रियाओं को बंद करें?
मैं ऐसी विधि की उम्मीद कर रहा था जिसके लिए प्रक्रिया में बदलाव की आवश्यकता नहीं होगी, लेकिन यह शायद कुछ भी नहीं होगा। http://www.depesz.com/index.php/2010/03/18/profiling-stored-proceduresfunctions/ एक समान प्रक्रिया दस्तावेज करता है, लेकिन यह उपयोग करने योग्य डेटा प्राप्त करने के लिए अत्यधिक जटिल लगता है। यह प्रक्रिया एक सोलर डेटा आयात हैंडलर क्वेरी के लिए दस्तावेज़ बनाने के लिए उपयोग किए गए नेस्टेड लूप का एक सेट है, यदि यह किसी भी (शायद नहीं) में मदद करता है। – Aneurysm9
यह करने का यह एक अच्छा तरीका नहीं है, लेकिन यह एकमात्र तरीका है। यही कारण है कि चीजों को छोटा और सरल रखना महत्वपूर्ण है: अन्य कोड की तरह, छोटी प्रक्रियाओं को डीबग और प्रोफ़ाइल के लिए बहुत आसान है। –
दुर्भाग्यवश, प्रक्रिया जितनी सरल हो सकती है उतनी सरल है। यह कुछ डेटा चुनकर 1: एन रिश्तों का एक गुच्छा चलता है, एन पर पुनरावृत्ति करता है, अधिक डेटा चुनता है, नेस्टेड 1: एन रिश्ते पर फिर से चल रहा है, फिर पूर्ण पंक्ति तैयार होने के बाद आंतरिक लूप से आगे लौटें। चयन या फॉर से अधिक जटिल सब कुछ पहले ही अन्य प्रक्रियाओं में रखा गया है। – Aneurysm9