डीबीएमएस समवर्ती नियंत्रण: लॉकिंग और टाइमस्टैम्प-आधारित प्रोटोकॉल

⚡ स्मार्ट सारांश

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

  • 👥 मूल मकसद: समवर्ती नियंत्रण कई लेन-देनों को एक साथ साझा डेटा तक पहुँचने की अनुमति देता है, जबकिping डेटाबेस सुसंगत है।
  • ⚠️ विसंगतियों को रोका गया: यह चार समस्याओं को रोकता है: खोया हुआ अपडेट, गलत रीड, गैर-दोहराने योग्य रीड और गलत सारांश।
  • 🔒 लॉक-आधारित: शेयर्ड और एक्सक्लूसिव लॉक यह नियंत्रित करते हैं कि किसी डेटा आइटम को दूसरों द्वारा पढ़ा या लिखा जा सकता है या नहीं।
  • 🔁 दो-चरण लॉकिंग: विकास के चरण में लॉक प्राप्त किए जाते हैं और संकुचन के चरण में उन्हें जारी किया जाता है, जो क्रमबद्धता की गारंटी देता है।
  • टाइमस्टैम्प-आधारित: पुराने लेन-देन को प्राथमिकता मिलती है, जिससे परस्पर विरोधी कार्रवाइयों को सिस्टम टाइमस्टैम्प के आधार पर क्रमबद्ध किया जाता है।
  • सत्यापन-आधारित: ऑप्टिमिस्टिक कंट्रोल स्थानीय प्रतियों पर काम करता है, और केवल लेखन चरण से पहले ही सत्यापन करता है।
  • 🎯 लक्ष्य: न्यूनतम ओवरहेड के साथ अधिकतम समवर्ती कार्यक्षमता, साइट और संचार विफलताओं के प्रति लचीला।

डेटाबेस मैनेजमेंट सिस्टम में लॉकिंग और टाइमस्टैम्प शेड्यूलर

समवर्ती नियंत्रण क्या है?

समरूपता नियंत्रण डेटाबेस प्रबंधन प्रणाली में, एक साथ कई कार्यों को बिना किसी टकराव के प्रबंधित करने की प्रक्रिया को डेटाबेस प्रबंधन प्रणाली में शामिल किया जाता है। यह सुनिश्चित करता है कि डेटाबेस लेनदेन एक साथ और सटीक रूप से निष्पादित हों, जिससे संबंधित डेटाबेस की डेटा अखंडता का उल्लंघन किए बिना सही परिणाम प्राप्त हों।

यदि सभी उपयोगकर्ता केवल डेटा पढ़ रहे हैं, तो एक साथ कई उपयोगकर्ताओं तक पहुंचना काफी आसान है, क्योंकि उनके बीच किसी भी प्रकार का हस्तक्षेप नहीं हो सकता। हालांकि, किसी भी व्यावहारिक डेटाबेस में READ और WRITE ऑपरेशन का मिश्रण होता है, और इसलिए समवर्तीता एक चुनौती बन जाती है।

DBMS समवर्ती नियंत्रण का उपयोग ऐसे टकरावों को दूर करने के लिए किया जाता है, जो अधिकतर बहु-उपयोगकर्ता प्रणाली में होते हैं। इसलिए, समवर्ती नियंत्रण डेटाबेस के सुचारू संचालन के लिए सबसे महत्वपूर्ण तत्वों में से एक है, जहाँ दो या अधिक लेनदेन एक साथ निष्पादित होते हैं और समान डेटा तक पहुँच की आवश्यकता होती है। यह इसके साथ मिलकर काम करता है। लेन - देन प्रबंधनजो कार्य की उन इकाइयों को परिभाषित करता है जिन्हें समवर्ती नियंत्रण को सुरक्षित रूप से अंतर्संबद्ध करना चाहिए।

समवर्तीता की संभावित समस्याएं

उचित डीबीएमएस समवर्ती नियंत्रण के बिना आपको जिन समस्याओं का सामना करना पड़ सकता है, वे इस प्रकार हैं:

  • खोए हुए अपडेट ऐसा तब होता है जब कई लेनदेन एक ही पंक्ति का चयन करते हैं और चयनित मान के आधार पर उसे अपडेट करते हैं।
  • अप्रतिबद्ध निर्भरता (डर्टी रीड) तब होता है जब दूसरा लेनदेन एक ऐसी पंक्ति का चयन करता है जिसे किसी अन्य लेनदेन द्वारा अपडेट किया गया है जो अभी तक कमिट नहीं हुआ है।
  • गैर-दोहराए जाने योग्य पठन ऐसा तब होता है जब दूसरा लेनदेन एक ही पंक्ति को कई बार एक्सेस करता है और हर बार अलग-अलग डेटा पढ़ता है।
  • गलत सारांश यह तब होता है जब एक लेनदेन किसी दोहराए गए डेटा आइटम के सभी उदाहरणों के मूल्य का सारांश लेता है, जबकि दूसरा लेनदेन उनमें से कुछ उदाहरणों को अपडेट करता है। परिणामी सारांश सही परिणाम नहीं दर्शाता है।

कॉन्करेंसी मेथड का उपयोग क्यों करें?

डेटाबेस मैनेजमेंट सिस्टम (DBMS) में समवर्ती नियंत्रण विधि का उपयोग करने के कारण:

  • परस्पर विरोधी लेन-देनों के बीच पारस्परिक बहिष्कार के माध्यम से अलगाव लागू करना।
  • रीड-राइट और राइट-राइट संबंधी टकराव की समस्याओं को हल करने के लिए।
  • निष्पादन संबंधी बाधाओं को लगातार लागू करके डेटाबेस की स्थिरता को बनाए रखना।
  • समवर्ती लेनदेन के बीच परस्पर क्रिया को नियंत्रित करने के लिए, समवर्ती नियंत्रण योजनाओं का उपयोग किया जाता है।
  • क्रमबद्धता सुनिश्चित करने में सहायता के लिए।

उदाहरण

मान लीजिए कि दो व्यक्ति एक ही समय पर एक ही फिल्म और एक ही शो टाइम के लिए टिकट खरीदने के लिए इलेक्ट्रॉनिक कियोस्क पर जाते हैं।

हालांकि, उस शो के लिए थिएटर में केवल एक ही सीट बची है। कॉन्करेंसी कंट्रोल के बिना, यह संभव है कि दोनों दर्शक टिकट खरीद लें। कॉन्करेंसी कंट्रोल ऐसा होने से रोकता है। दोनों दर्शक अभी भी मूवी सीटिंग डेटाबेस में मौजूद जानकारी देख सकते हैं, लेकिन कॉन्करेंसी कंट्रोल केवल उसी खरीदार को टिकट देता है जो लेन-देन प्रक्रिया पहले पूरी करता है।

समवर्ती नियंत्रण प्रोटोकॉल

विभिन्न समवर्ती नियंत्रण प्रोटोकॉल समवर्तीता की मात्रा और उससे उत्पन्न होने वाले अतिरिक्त भार के बीच अलग-अलग संतुलन प्रदान करते हैं। डेटाबेस प्रबंधन प्रणाली (DBMS) में मुख्य समवर्ती नियंत्रण तकनीकें निम्नलिखित हैं:

  • लॉक-आधारित प्रोटोकॉल
  • दो-चरण लॉकिंग प्रोटोकॉल
  • टाइमस्टैम्प-आधारित प्रोटोकॉल
  • सत्यापन-आधारित प्रोटोकॉल

नीचे इनमें से प्रत्येक की बारी-बारी से जांच की गई है, जिसकी शुरुआत सबसे व्यापक रूप से उपयोग किए जाने वाले, लॉक-आधारित प्रोटोकॉल से होती है।

लॉक-आधारित प्रोटोकॉल

लॉक-आधारित प्रोटोकॉल डेटाबेस प्रबंधन प्रणाली (DBMS) में लॉक एक ऐसी व्यवस्था है जिसमें कोई लेनदेन तब तक किसी डेटा आइटम को पढ़ या लिख ​​नहीं सकता जब तक कि उसे उपयुक्त लॉक प्राप्त न हो जाए। लॉक-आधारित प्रोटोकॉल किसी विशिष्ट डेटा आइटम को एक ही लेनदेन के लिए लॉक या अलग करके समवर्तीता की समस्या को दूर करने में मदद करते हैं।

लॉक एक डेटा आइटम से जुड़ा डेटा वेरिएबल है जो यह दर्शाता है कि उस पर कौन से ऑपरेशन किए जा सकते हैं। लॉक समवर्ती लेनदेन द्वारा डेटाबेस आइटम तक पहुंच को सिंक्रनाइज़ करने में मदद करते हैं। सभी लॉक अनुरोध समवर्ती नियंत्रण प्रबंधक को भेजे जाते हैं, और लेनदेन तभी आगे बढ़ते हैं जब लॉक अनुरोध स्वीकृत हो जाता है।

बाइनरी लॉक: किसी डेटा आइटम पर बाइनरी लॉक या तो लॉक अवस्था में हो सकता है या अनलॉक अवस्था में।

साझा/विशेष: यह लॉकिंग तंत्र लॉकों को उनके उपयोग के आधार पर अलग करता है। यदि किसी लॉक का उपयोग लिखने की क्रिया करने के लिए किया जाता है, तो उसे एक्सक्लूसिव लॉक कहा जाता है।

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

2. एक्सक्लूसिव लॉक (X): एक्सक्लूसिव लॉक के साथ, किसी डेटा आइटम को पढ़ा और लिखा दोनों जा सकता है। यह एक्सक्लूसिव होता है और एक ही डेटा आइटम पर एक साथ कई लॉक नहीं लगाए जा सकते। X-लॉक लगाने के लिए lock-x निर्देश का उपयोग किया जाता है। उदाहरण के लिए, जब किसी लेन-देन को खाते की शेष राशि को अपडेट करने की आवश्यकता होती है, तो X-लॉक लगाकर इसकी अनुमति दी जाती है; इसके बाद, पढ़ने या लिखने की इच्छा रखने वाले दूसरे लेन-देन को रोक दिया जाता है।

3. सरल लॉक प्रोटोकॉल: इससे लेन-देन को किसी भी ऑपरेशन को शुरू करने से पहले प्रत्येक ऑब्जेक्ट पर लॉक प्राप्त करने की अनुमति मिलती है। लिखने का ऑपरेशन पूरा होने के बाद लेन-देन डेटा आइटम को अनलॉक कर सकता है।

4. पूर्व-दावा लॉकिंग: यह प्रोटोकॉल प्रक्रियाओं का मूल्यांकन करता है और निष्पादन शुरू करने के लिए आवश्यक डेटा आइटमों की एक सूची बनाता है। सभी लॉक स्वीकृत हो जाने पर, लेनदेन निष्पादित होता है, और इसके संचालन समाप्त होने पर सभी लॉक जारी कर दिए जाते हैं।

भुखमरी: भुखमरी वह स्थिति है जब कोई लेन-देन लॉक प्राप्त करने के लिए अनिश्चित काल तक प्रतीक्षा करता है। इसके कारणों में लॉक किए गए आइटमों के लिए खराब ढंग से प्रबंधित प्रतीक्षा प्रणाली, संसाधन की कमी, या एक ही लेन-देन का बार-बार शिकार के रूप में चुना जाना शामिल हो सकता है।

गतिरोध: डेडलॉक एक ऐसी स्थिति को संदर्भित करता है जहां दो या दो से अधिक प्रक्रियाएं एक-दूसरे द्वारा संसाधन जारी करने की प्रतीक्षा करती हैं, जिससे एक चक्रीय श्रृंखला बन जाती है।

दो-चरण लॉकिंग (2PL) प्रोटोकॉल

RSI दो-चरण लॉकिंग प्रोटोकॉल2PL के नाम से भी जाना जाने वाला यह समवर्ती नियंत्रण का एक तरीका है जो लेनदेन डेटा पर लॉक लगाकर क्रमबद्धता सुनिश्चित करता है, जिससे अन्य लेनदेन एक ही समय में उसी डेटा तक पहुंचने से अवरुद्ध हो जाते हैं।

टू-फेज़ लॉकिंग प्रोटोकॉल प्रत्येक लेनदेन को दो चरणों में लॉक या अनलॉक करने का अनुरोध करने की अनुमति देता है:

  • विकास चरण: इस चरण में कोई लेनदेन लॉक प्राप्त कर सकता है लेकिन किसी भी लॉक को जारी नहीं कर सकता है।
  • सिकुड़ने का चरण: इस चरण में कोई लेन-देन लॉक को मुक्त कर सकता है लेकिन कोई नया लॉक प्राप्त नहीं कर सकता है।

दो चरण लॉकिंग वृद्धि और संकुचन चरण

यह सच है कि 2PL सीरियलाइज़ेबिलिटी प्रदान करता है। हालांकि, यह डेडलॉक की संभावना को पूरी तरह से खत्म नहीं करता है। ऊपर दिए गए आरेख में, स्थानीय और वैश्विक डेडलॉक डिटेक्टर डेडलॉक की खोज करते हैं और लेन-देन को उनकी प्रारंभिक स्थिति में वापस लाकर उन्हें हल करते हैं।

सख्त दो-चरण लॉकिंग विधि

स्ट्रिक्ट 2PL लगभग 2PL के समान ही है। एकमात्र अंतर यह है कि स्ट्रिक्ट-2PL लॉक का उपयोग करने के बाद उसे कभी रिलीज़ नहीं करता। यह कमिट पॉइंट तक सभी लॉक को होल्ड करके रखता है और प्रक्रिया समाप्त होने पर उन्हें एक साथ रिलीज़ कर देता है।

केंद्रीकृत 2PL

सेंट्रलाइज्ड 2PL में, एक ही साइट लॉक मैनेजमेंट प्रक्रिया के लिए जिम्मेदार होती है। इसमें पूरे DBMS के लिए केवल एक ही लॉक मैनेजर होता है।

प्राइमरी कॉपी 2PL

प्राइमरी कॉपी 2PL तंत्र में, कई लॉक मैनेजर अलग-अलग साइटों पर वितरित किए जाते हैं, और एक विशेष लॉक मैनेजर डेटा आइटम के एक सेट के लिए लॉक को प्रबंधित करने के लिए जिम्मेदार होता है। जब प्राइमरी कॉपी अपडेट होती है, तो परिवर्तन स्लेव सिस्टम तक पहुंच जाता है।

वितरित 2PL

इस व्यवस्था में, लॉक मैनेजर सभी साइटों पर वितरित किए जाते हैं और उस साइट पर डेटा के लिए लॉक प्रबंधित करने के लिए जिम्मेदार होते हैं। यदि कोई डेटा प्रतिकृति नहीं की जाती है, तो यह प्राइमरी कॉपी 2PL के समतुल्य है। डिस्ट्रीब्यूटेड 2PL की संचार लागत प्राइमरी कॉपी 2PL की तुलना में काफी अधिक होती है।

टाइमस्टैम्प-आधारित प्रोटोकॉल

RSI टाइमस्टैम्प-आधारित प्रोटोकॉल डेटाबेस मैनेजमेंट सिस्टम (DBMS) में, यह एक एल्गोरिदम है जो समवर्ती लेनदेन के निष्पादन को क्रमबद्ध करने के लिए सिस्टम समय या तार्किक काउंटर को टाइमस्टैम्प के रूप में उपयोग करता है। यह सुनिश्चित करता है कि प्रत्येक परस्पर विरोधी रीड और राइट ऑपरेशन टाइमस्टैम्प क्रम में निष्पादित हों।

इस विधि में हमेशा पुराने लेन-देन को प्राथमिकता दी जाती है। यह लेन-देन का टाइमस्टैम्प निर्धारित करने के लिए सिस्टम समय का उपयोग करता है, और यह सबसे अधिक उपयोग किया जाने वाला समवर्ती प्रोटोकॉल है। लॉक-आधारित प्रोटोकॉल परस्पर विरोधी लेन-देनों के निष्पादन के समय उनके क्रम को प्रबंधित करते हैं; टाइमस्टैम्प-आधारित प्रोटोकॉल किसी ऑपरेशन के बनते ही टकरावों को प्रबंधित करते हैं।

उदाहरण:

Suppose there are three transactions T1, T2, and T3.
T1 has entered the system at time 0010
T2 has entered the system at 0020
T3 has entered the system at 0030
Priority will be given to transaction T1, then T2 and lastly T3.

लाभ:

  • 2PL प्रोटोकॉल की तरह ही शेड्यूल भी सीरियलाइजेबल होते हैं।
  • लेनदेन के लिए प्रतीक्षा करने की आवश्यकता नहीं है, जिससे गतिरोध की संभावना समाप्त हो जाती है।

नुकसान: यदि एक ही लेनदेन को बार-बार शुरू किया जाता है और लगातार रद्द किया जाता है, तो भुखमरी की स्थिति उत्पन्न हो सकती है।

सत्यापन-आधारित प्रोटोकॉल

RSI सत्यापन-आधारित प्रोटोकॉल डेटाबेस मैनेजमेंट सिस्टम (DBMS) में, जिसे आशावादी समवर्ती नियंत्रण तकनीक के रूप में भी जाना जाता है, लेनदेन में समवर्ती टकराव से बचने की एक विधि है। इस प्रोटोकॉल में, लेनदेन डेटा को अपडेट करने के बजाय, लेनदेन डेटा की स्थानीय प्रतियां अपडेट की जाती हैं, जिसके परिणामस्वरूप निष्पादन के दौरान कम हस्तक्षेप होता है।

सत्यापन-आधारित प्रोटोकॉल को तीन चरणों में निष्पादित किया जाता है:

  1. चरण पढ़ें
  2. सत्यापन चरण
  3. चरण लिखें

चरण पढ़ें

रीड फेज में, डेटा वैल्यू को ट्रांजैक्शन द्वारा पढ़ा जा सकता है, लेकिन राइट ऑपरेशन या अपडेट केवल लोकल डेटा कॉपी पर लागू होते हैं, न कि वास्तविक डेटाबेस पर।

सत्यापन चरण

सत्यापन चरण में, यह सुनिश्चित करने के लिए डेटा की जाँच की जाती है कि अपडेट लागू करने से सीरियलाइज़ेबिलिटी का उल्लंघन नहीं होगा।

चरण लिखें

लेखन चरण में, यदि सत्यापन सफल होता है तो डेटाबेस में अपडेट लागू किए जाते हैं; अन्यथा अपडेट रद्द कर दिए जाते हैं और लेनदेन को वापस ले लिया जाता है।

समवर्ती नियंत्रण प्रोटोकॉल की तुलना

चारों प्रोटोकॉल परिवार इस बारे में अलग-अलग अनुमान लगाते हैं कि लेन-देन में वास्तव में कितनी बार टकराव होता है। नीचे दी गई तालिका बताती है कि प्रत्येक प्रोटोकॉल किस श्रेणी में आता है।

प्रोटोकॉल दृष्टिकोण गतिरोध सर्वोत्तम समय
लॉक-आधारित निराशावादी, पहुँच से पहले ताला लगा देता है संभव संघर्ष अक्सर होते रहते हैं
दो-चरण लॉकिंग निराशावादी, विकास और संकुचन के चरण संभव क्रमबद्धता आवश्यक है
टाइमस्टैम्प-आधारित समय के अनुसार आदेश गतिरोध से मुक्त ऑर्डर देना महत्वपूर्ण है, इंतजार करना महंगा पड़ सकता है।
सत्यापन-आधारित आशावादी रहें, लिखने से पहले पुष्टि करें गतिरोध से मुक्त संघर्ष दुर्लभ हैं

संक्षेप में, लॉक-आधारित और 2PL प्रोटोकॉल यह मानते हैं कि टकराव आम बात है और इसे पहले से ही रोकते हैं, जबकि टाइमस्टैम्प और सत्यापन प्रोटोकॉल यह मानते हैं कि टकराव दुर्लभ है और इसे तभी हल करते हैं जब यह सामने आता है।

एक अच्छे समवर्ती प्रोटोकॉल की विशेषताएं

एक आदर्श समवर्ती नियंत्रण तंत्र के निम्नलिखित उद्देश्य होते हैं:

  • इसे साइट और संचार संबंधी विफलताओं के प्रति लचीला होना चाहिए।
  • यह अधिकतम समवर्तीता प्राप्त करने के लिए लेनदेन के समानांतर निष्पादन की अनुमति देता है।
  • ओवरहेड को न्यूनतम करने के लिए इसकी भंडारण प्रणाली और गणना पद्धतियां सरल होनी चाहिए।
  • इसे लेन-देन की परमाणु क्रियाओं की संरचना पर कुछ प्रतिबंध लागू करने होंगे।

अक्सर पूछे जाने वाले प्रश्न

शेयर्ड लॉक एक साथ कई बार रीड ऑपरेशन की अनुमति देता है लेकिन राइट ऑपरेशन की नहीं, इसलिए कई ट्रांजैक्शन इसे होल्ड कर सकते हैं। एक्सक्लूसिव लॉक रीड और राइट दोनों की अनुमति देता है और इसे शेयर नहीं किया जा सकता, इसलिए केवल एक ट्रांजैक्शन ही इसे होल्ड कर सकता है।

नहीं। 2PL सीरियलाइज़ेबिलिटी की गारंटी तो देता है, लेकिन डेडलॉक से मुक्ति की नहीं। दो ट्रांजैक्शन अभी भी एक-दूसरे के लॉक पर प्रतीक्षा कर सकते हैं, इसलिए एक अलग पहचान या टाइमआउट तंत्र की आवश्यकता है।

जब टकराव दुर्लभ हों, तो सत्यापन-आधारित नियंत्रण लॉक ओवरहेड से बचाता है और लेन-देन को स्वतंत्र रूप से चलने देता है, केवल कमिट के समय जाँच करता है। अत्यधिक प्रतिस्पर्धा की स्थिति में, यह बार-बार रोलबैक के कारण काम को व्यर्थ करता है।

एआई पिछले वर्कलोड का अध्ययन करके यह अनुमान लगाता है कि किन लेनदेन में टकराव होगा, फिर एक आइसोलेशन स्तर या लॉक ग्रैन्युलैरिटी की सिफारिश करता है जो थ्रूपुट को बढ़ाता है जबकिping परिणाम क्रमबद्ध करने योग्य हैं।

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

इस पोस्ट को संक्षेप में इस प्रकार लिखें: