2008-10-29 19 views
8

में plpgsql का उपयोग करने के क्या फायदे हैं सिंटेक्टिक चीनी और अभिव्यक्ति शक्ति के अलावा रनटाइम दक्षता में अंतर क्या हैं। मेरा मतलब है, plpgsql से तेज हो सकता है, plpythonu या pljava कहें? या वे सभी लगभग बराबर हैं?postgresql

हम लगभग-डुप्लिकेट एक मामूली आकार डेटाबेस में लोगों के रिकॉर्ड का पता लगाने

+0

क्या आप हमें सिस्टम के बारे में थोड़ा और बता सकते हैं कि इसका उपयोग किया जाएगा? लोगों और आपकी टीम द्वारा उपयोग की जाने वाली भाषाओं और वास्तुकला के विकल्पों के आधार पर लोगों के पास बेहतर सलाह हो सकती है। –

उत्तर

8

plpgsql अधिक से अधिक प्रकार के सुरक्षा मेरा मानना ​​है कि प्रदान करता है (अभिलेखों का 10M के आसपास) के कार्य के लिए संग्रहित प्रक्रियाओं का उपयोग कर रहे हैं, आप अगर स्पष्ट डाले प्रदर्शन करने के लिए है आप वर्चर और टेक्स्ट या इंटेल 4 और int8 जैसे समान प्रकार के दो अलग-अलग कॉलम का उपयोग करके संचालन करना चाहते हैं। यह महत्वपूर्ण है क्योंकि यदि आपको अपनी संग्रहीत प्रोसेस इंडेक्स का उपयोग करने की आवश्यकता है, तो पोस्टग्रेज़ की आवश्यकता होती है कि प्रकार शामिल होने की स्थिति के बीच बिल्कुल मेल खाते हैं (संपादित करें: समानता जांच के लिए भी मुझे लगता है)।

हालांकि अन्य भाषाओं में इसकी सुविधा हो सकती है, मैंने इनका उपयोग नहीं किया है। किसी भी मामले में, मुझे उम्मीद है कि यह आपको आपकी जांच के लिए एक बेहतर प्रारंभिक बिंदु देता है।

2

वास्तविक परीक्षण किए बिना, मैं अपेक्षा करता हूं कि plpgsql अन्य भाषाओं की तुलना में कुछ अधिक कुशल हो, क्योंकि यह छोटा है। ऐसा कहकर, याद रखें कि एसक्यूएल फ़ंक्शन plpgsql से भी तेज होने की संभावना है, यदि कोई फ़ंक्शन इतना आसान है कि आप इसे केवल SQL में लिख सकते हैं।

+0

plpglql के अलावा plperl या कुछ अन्य का उपयोग करके मेरे परीक्षण में यह ठीक से काम करता है जब यह SQL संबंधित तर्क नहीं है। उदाहरण के लिए लूपिंग या कंप्यूटेशंस करना plperl हमेशा मेरे सीमित परीक्षण में plpgsql धूम्रपान किया है। – Kuberchaun

6

plpgsql एसक्यूएल के साथ बहुत अच्छी तरह से एकीकृत है - स्रोत कोड बहुत साफ और पठनीय होना चाहिए। पीएलजेवा या पीएलपीथन जैसे एसक्यूएल भाषाओं के लिए, एसक्यूएल स्टेटमेंट को अलग करना होगा - एसक्यूएल भाषा का हिस्सा नहीं है। तो आपको थोड़ा और कोड लिखना होगा। यदि आपकी प्रक्रिया में बहुत से SQL कथन हैं, तो plpgsql प्रक्रिया क्लीनर, कम और थोड़ा तेज़ होना चाहिए। जब आपकी प्रक्रिया में SQL कथन नहीं होते हैं, तो बाहरी भाषाओं की प्रक्रियाएं तेज़ी से हो सकती हैं - लेकिन बाहरी भाषाओं (व्याख्याओं) को प्रारंभिकरण के लिए कुछ समय चाहिए - इसलिए सरल कार्य के लिए, SQL या plpgsql भाषा में प्रक्रियाएं तेज होनी चाहिए।

बाहरी भाषाओं उपयोग किया जाता है जब आप नेट के लिए उपयोग, फाइल सिस्टम के लिए उपयोग की तरह कुछ कार्यक्षमता की जरूरत है - http://www.postgres.cz/index.php/PL/Perlu_-_Untrusted_Perl_%28en%29

मुझे क्या पता - लोग आम तौर पर पी एल भाषाओं के संयोजन का उपयोग - (एसक्यूएल, plpgsql, plperl) या (एसक्यूएल , plpgsql, plpython)।