DBMS - गतिरोध

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

उदाहरण के लिए, लेनदेन का एक सेट मान लें {T 0 , T 1 , T 2 , ..., T n }। T 0 को अपना कार्य पूरा करने के लिए एक संसाधन X की आवश्यकता होती है। संसाधन X को T 1 द्वारा आयोजित किया जाता है , और T 1 एक संसाधन Y की प्रतीक्षा कर रहा है, जो T 2 के पास है । T 2 संसाधन Z की प्रतीक्षा कर रहा है, जो T 0 द्वारा आयोजित होता है । इस प्रकार, सभी प्रक्रियाएं संसाधनों को जारी करने के लिए एक दूसरे की प्रतीक्षा करती हैं। इस स्थिति में, कोई भी प्रक्रिया अपना कार्य पूरा नहीं कर सकती है। इस स्थिति को गतिरोध के रूप में जाना जाता है।

गतिरोध एक प्रणाली के लिए स्वस्थ नहीं हैं। यदि कोई सिस्टम गतिरोध में फंस गया है, तो गतिरोध में शामिल लेनदेन या तो वापस ले लिए गए हैं या फिर से शुरू किए गए हैं।

गतिरोध निवारण

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

गतिरोध की रोकथाम योजनाएँ हैं जो समय-सीमा के आदेश तंत्र का उपयोग करती हैं ताकि एक गतिरोध की स्थिति में पूर्व-निर्धारित हो।

रुको-मरो योजना

इस योजना में, यदि कोई लेन-देन किसी संसाधन (डेटा आइटम) को लॉक करने का अनुरोध करता है, जो पहले से ही एक अन्य लेनदेन द्वारा परस्पर विरोधी लॉक के साथ होता है, तो दो में से एक संभावना हो सकती है -

  • यदि TS (T i ) <TS (T j ) - वह T i है , जो एक परस्पर विरोधी लॉक का अनुरोध कर रहा है, T j से पुराना है - तो T i को डेटा-आइटम उपलब्ध होने तक प्रतीक्षा करने की अनुमति है।

  • यदि TS (T i )> TS (t j ) - अर्थात T i , T j से छोटा है - तो T i मर जाता है। टी i को बाद में एक यादृच्छिक विलंब के साथ फिर से शुरू किया जाता है लेकिन उसी टाइमस्टैम्प के साथ।

यह योजना पुराने लेनदेन की प्रतीक्षा करने की अनुमति देती है लेकिन छोटे को मार देती है।

घायल-प्रतीक्षा योजना

इस योजना में, यदि कोई लेनदेन एक संसाधन (डेटा आइटम) को लॉक करने का अनुरोध करता है, जो पहले से ही कुछ अन्य लेनदेन द्वारा परस्पर विरोधी लॉक के साथ होता है, तो दो में से एक संभावना हो सकती है -

  • यदि टीएस (टी आई ) <टीएस (टी जे ), तो टी आई टी जे को वापस रोल करने के लिए मजबूर करता है - यानी टी आई घाव टी जे । टी जे को बाद में एक यादृच्छिक देरी के साथ फिर से शुरू किया जाता है लेकिन उसी टाइमस्टैम्प के साथ।

  • यदि टीएस (टी आई )> टीएस (टी जे ), तो टी आई को संसाधन उपलब्ध होने तक इंतजार करने के लिए मजबूर किया जाता है।

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

दोनों स्थितियों में, बाद के चरण में सिस्टम में प्रवेश करने वाले लेनदेन को निरस्त कर दिया जाता है।

गतिरोध से बचाव

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

प्रतीक्षा-ग्राफ के लिए

यदि कोई गतिरोध की स्थिति उत्पन्न हो सकती है तो यह ट्रैक करने के लिए एक सरल विधि उपलब्ध है। सिस्टम में प्रवेश करने वाले प्रत्येक लेनदेन के लिए, एक नोड बनाया जाता है। जब कोई लेन-देन T i किसी आइटम पर लॉक के लिए अनुरोध करता है, तो X का कहना है, जिसे कुछ अन्य लेनदेन T j द्वारा आयोजित किया जाता है , T i से T j तक एक निर्देशित बढ़त बनाई जाती है । यदि T j आइटम X को रिलीज़ करता है, तो उनके बीच का किनारा गिरा दिया जाता है और T i डेटा आइटम को लॉक कर देता है।

सिस्टम इस प्रतीक्षा-प्रतिचित्र को प्रत्येक लेनदेन के लिए दूसरों द्वारा रखे गए कुछ डेटा आइटम्स की प्रतीक्षा में बनाए रखता है। यदि ग्राफ़ में कोई चक्र है, तो सिस्टम जाँच करता रहता है।

यहाँ, हम निम्नलिखित दो दृष्टिकोणों में से किसी का उपयोग कर सकते हैं -

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

  • दूसरा विकल्प लेन-देन में से एक को वापस करना है। यह हमेशा छोटे लेनदेन को वापस करने के लिए संभव नहीं है, क्योंकि यह पुराने की तुलना में महत्वपूर्ण हो सकता है। कुछ रिश्तेदार एल्गोरिदम की मदद से, एक लेनदेन चुना जाता है, जिसे गर्भपात करना होता है। यह लेनदेन के रूप में जाना जाता हैvictim और प्रक्रिया के रूप में जाना जाता है victim selection