माइक्रोसॉफ्ट एसक्यूएल सर्वर ट्रांसजेक्ट-एसक्यूएल कथन को प्रबंधनीय ब्लॉक में समूहित करके डेटाबेस विकास प्रक्रिया को सरल बनाने के लिए संग्रहीत प्रक्रिया तंत्र प्रदान करता है। अधिकांश SQL सर्वर डेवलपर्स द्वारा संग्रहित प्रक्रियाओं की सराहना की जाती है, जो समय-समय पर पहले से निवेश के लायक होते हैं, जो दक्षता और सुरक्षा लाभ प्राप्त करते हैं।
संग्रहीत प्रक्रियाओं का उपयोग करने के लाभ
एक डेवलपर संग्रहित प्रक्रियाओं का उपयोग क्यों करना चाहिए?
इस तकनीक के प्रमुख लाभ यहां दिए गए हैं:
- प्रीकंपिल्ड निष्पादन: SQL सर्वर एक बार संग्रहीत प्रक्रिया को संकलित करता है और फिर निष्पादन योजना का पुन: उपयोग करता है। जब संग्रहित प्रक्रियाओं को बार-बार कहा जाता है तो इसका परिणाम शानदार प्रदर्शन में होता है।
- कम ग्राहक / सर्वर यातायात: यदि नेटवर्क बैंडविड्थ आपके पर्यावरण में चिंता का विषय है, तो आपको यह जानकर ख़ुशी होगी कि संग्रहीत प्रक्रियाएं लंबे SQL क्वेरी को तार पर प्रसारित एक पंक्ति में कम कर सकती हैं।
- कोड और प्रोग्रामिंग अमूर्तता का कुशल पुन: उपयोग: संग्रहीत प्रक्रियाओं का उपयोग कई उपयोगकर्ताओं और क्लाइंट प्रोग्राम्स द्वारा किया जा सकता है। यदि आप उन्हें नियोजित तरीके से उपयोग करते हैं, तो आप पाएंगे कि विकास चक्र में कम समय लगता है।
- उन्नत सुरक्षा नियंत्रण: आप उपयोगकर्ताओं को अंतर्निहित तालिका अनुमतियों से स्वतंत्र रूप से संग्रहीत प्रक्रिया निष्पादित करने की अनुमति दे सकते हैं।
संग्रहीत प्रक्रिया उपयोगकर्ता परिभाषित कार्यों के समान होती है, लेकिन सूक्ष्म अंतर होते हैं।
संरचना
संग्रहीत प्रक्रियाएं अन्य प्रोग्रामिंग भाषाओं में देखी गई संरचनाओं के समान होती हैं।
वे निष्पादन समय पर निर्दिष्ट इनपुट पैरामीटर के रूप में डेटा स्वीकार करते हैं। इन इनपुट पैरामीटर (यदि कार्यान्वित किए गए हैं) का उपयोग कुछ बयानों की श्रृंखला के निष्पादन में किया जाता है जो कुछ परिणाम उत्पन्न करते हैं। यह परिणाम एक रिकॉर्डसेट, आउटपुट पैरामीटर और रिटर्न कोड के उपयोग के माध्यम से कॉलिंग पर्यावरण पर वापस आ गया है।
यह एक मुंह की तरह लग सकता है, लेकिन आप पाएंगे कि संग्रहीत प्रक्रिया वास्तव में काफी सरल हैं।
उदाहरण
आइए इस पृष्ठ के निचले हिस्से में दिखाए गए सूची नामक तालिका से संबंधित एक व्यावहारिक उदाहरण देखें। यह जानकारी वास्तविक समय में अपडेट की जाती है, और गोदाम प्रबंधक लगातार अपने गोदाम में संग्रहीत उत्पादों के स्तर की जांच कर रहे हैं और शिपमेंट के लिए उपलब्ध हैं। अतीत में, प्रत्येक प्रबंधक निम्न के जैसा प्रश्न चलाएगा:
उत्पाद चुनें, मात्रासूची सेवेयरहाउस = 'FL'
इसके परिणामस्वरूप SQL सर्वर पर अक्षम प्रदर्शन हुआ। हर बार एक गोदाम प्रबंधक ने क्वेरी निष्पादित की, डेटाबेस सर्वर को क्वेरी को पुन: संकलित करने और इसे स्क्रैच से निष्पादित करने के लिए मजबूर होना पड़ा। इसके लिए गोदाम प्रबंधक को एसक्यूएल के ज्ञान और तालिका की जानकारी तक पहुंचने के लिए उचित अनुमतियां भी आवश्यक थीं।इसके बजाए, संग्रहीत प्रक्रिया के उपयोग के माध्यम से प्रक्रिया को सरल बनाया जा सकता है। Sp_GetInventory नामक प्रक्रिया के लिए कोड यहां दिया गया है जो किसी दिए गए गोदाम के लिए सूची स्तर पुनर्प्राप्त करता है। फ्लोरिडा गोदाम प्रबंधक तब आदेश जारी करके सूची स्तर तक पहुंच सकते हैं: न्यू यॉर्क वेयरहाउस मैनेजर उस क्षेत्र की सूची तक पहुंचने के लिए एक ही संग्रहीत प्रक्रिया का उपयोग कर सकता है: अनुमोदित, यह एक साधारण उदाहरण है, लेकिन अमूर्तता के लाभ यहां देखे जा सकते हैं। गोदाम प्रबंधक को एसक्यूएल या प्रक्रिया के आंतरिक कार्यों को समझने की आवश्यकता नहीं है। एक प्रदर्शन परिप्रेक्ष्य से, संग्रहीत प्रक्रिया अद्भुत काम करता है। SQL सर्वर एक निष्पादन योजना बनाता है और उसके बाद निष्पादन समय पर उपयुक्त पैरामीटर में प्लग करके इसे पुन: उपयोग करता है।अब जब आपने संग्रहित प्रक्रियाओं के लाभों को सीखा है, वहां बाहर निकलें और उनका उपयोग करें। कुछ उदाहरणों का प्रयास करें और हासिल किए गए प्रदर्शन संवर्द्धन को मापें-आप चकित होंगे! सूची तालिकाप्रक्रिया sp_GetInventory बनाएँ@ स्थान वर्कर (10)जैसाउत्पाद चुनें, मात्रासूची सेवेयरहाउस = @ स्थानEX_UTE SP_GetInventory 'FL'EX_UTE SP_GetInventory 'NY'आईडी उत्पाद गोदाम मात्रा 142 हरी सेम न्यूयॉर्क 100 214 मटर फ्लोरिडा 200 825 मक्का न्यूयॉर्क 140 512 लाइमा बीन्स न्यूयॉर्क 180 491 टमाटर फ्लोरिडा 80 379 तरबूज फ्लोरिडा 85




