Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

DBMS में डेडलॉक


डेडलॉक तब होता है जब दो या अधिक प्रक्रियाओं को अपने निष्पादन को पूरा करने के लिए किसी संसाधन की आवश्यकता होती है जो दूसरी प्रक्रिया के पास होता है। DBMS में डेडलॉक

उपरोक्त आरेख में, प्रक्रिया 1 के पास संसाधन 1 है और इसे संसाधन 2 की आवश्यकता है। इसी तरह प्रक्रिया 2 के पास संसाधन 2 है और इसे संसाधन 1 की आवश्यकता है। इनमें से प्रत्येक प्रक्रिया को पूरा करने के लिए दूसरे के संसाधन की आवश्यकता होती है लेकिन उनमें से कोई भी अपने संसाधन को छोड़ने को तैयार नहीं है। इसलिए, प्रक्रिया 1 और प्रक्रिया 2 डेडलॉक में हैं।

कॉफमैन शर्तें (Coffman Conditions)

डेडलॉक केवल तभी होगा यदि चार कॉफमैन शर्तें सत्य हों। ये शर्तें आवश्यक रूप से पारस्परिक रूप से अनन्य नहीं हैं। वे हैं:

पारस्परिक अपवर्जन (Mutual Exclusion)

एक संसाधन होना चाहिए जिसे एक समय में केवल एक प्रक्रिया द्वारा रखा जा सके। नीचे दिए गए आरेख में, संसाधन R1 का एकल उदाहरण है और यह केवल प्रक्रिया P1 के पास है।

DBMS में डेडलॉक

होल्ड एंड वेट (Hold and Wait)

एक प्रक्रिया कई संसाधनों को रख सकती है और फिर भी अन्य प्रक्रियाओं से अधिक संसाधनों का अनुरोध कर सकती है जो उन्हें रखे हुए हैं। नीचे दिए गए आरेख में, प्रक्रिया P1 संसाधन R1 और R2 रखती है और संसाधन R3 का अनुरोध कर रही है जो प्रक्रिया P2 के पास है।

DBMS में डेडलॉक

नो प्रीएम्प्शन (No Preemption)

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

DBMS में डेडलॉक

सर्कुलर वेट (Circular Wait)

एक प्रक्रिया दूसरे प्रक्रिया द्वारा रखे गए संसाधन की प्रतीक्षा कर रही है, जो तीसरे प्रक्रिया द्वारा रखे गए संसाधन की प्रतीक्षा कर रही है, और इसी तरह, जब तक अंतिम प्रक्रिया पहले प्रक्रिया द्वारा रखे गए संसाधन की प्रतीक्षा नहीं कर रही। यह एक सर्कुलर चेन बनाता है। उदाहरण के लिए: प्रक्रिया P1 को संसाधन R1 आवंटित है और यह संसाधन R2 का अनुरोध कर रही है। इसी तरह, प्रक्रिया P2 को संसाधन R2 आवंटित है और यह संसाधन R1 का अनुरोध कर रही है। यह एक सर्कुलर वेट लूप बनाता है।

DBMS में डेडलॉक

डेडलॉक डिटेक्शन (Deadlock Detection)

रिसोर्स शेड्यूलर डेडलॉक का पता लगा सकता है क्योंकि यह विभिन्न प्रक्रियाओं को आवंटित सभी संसाधनों का ट्रैक रखता है। डेडलॉक का पता लगने के बाद, इसे निम्नलिखित विधियों का उपयोग करके हल किया जा सकता है:

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

डेडलॉक प्रिवेंशन (Deadlock Prevention)

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

कुछ डेडलॉक प्रिवेंशन स्कीम हैं जो टाइमस्टैम्प का उपयोग करके यह सुनिश्चित करती हैं कि डेडलॉक न हो। ये हैं:

  • वेट-डाई स्कीम (Wait-Die Scheme)

    वेट-डाई स्कीम में, यदि ट्रांजैक्शन T1 किसी संसाधन का अनुरोध करता है जो ट्रांजैक्शन T2 के पास है, तो निम्नलिखित दो संभावनाओं में से एक हो सकती है:

    • TS(T1) < TS(T2) - यदि T1, T2 से पुराना है यानी T1 सिस्टम में T2 से पहले आया, तो इसे संसाधन के लिए प्रतीक्षा करने की अनुमति दी जाती है जो T2 द्वारा अपना निष्पादन पूरा करने पर मुक्त हो जाएगा।
    • TS(T1) > TS(T2) - यदि T1, T2 से छोटा है यानी T1 सिस्टम में T2 के बाद आया, तो T1 को मार दिया जाता है। इसे बाद में उसी टाइमस्टैम्प के साथ पुनः आरंभ किया जाता है।
  • वाउंड-वेट स्कीम (Wound-Wait Scheme)

    वाउंड-वेट स्कीम में, यदि ट्रांजैक्शन T1 किसी संसाधन का अनुरोध करता है जो ट्रांजैक्शन T2 के पास है, तो निम्नलिखित दो संभावनाओं में से एक हो सकती है:

    • TS(T1) < TS(T2) - यदि T1, T2 से पुराना है, तो इसे T2 को रोल बैक करने या वाउंड करने की अनुमति दी जाती है। फिर T1 संसाधन लेता है और अपना निष्पादन पूरा करता है। T2 को बाद में उसी टाइमस्टैम्प के साथ पुनः आरंभ किया जाता है।
    • TS(T1) > TS(T2) - यदि T1, T2 से छोटा है, तो इसे संसाधन के लिए प्रतीक्षा करने की अनुमति दी जाती है जो T2 द्वारा अपना निष्पादन पूरा करने पर मुक्त हो जाएगा।

डेडलॉक अवॉइडेंस (Deadlock Avoidance)

डेडलॉक होने के बाद उपाय करने के बजाय इससे बचना बेहतर है। वेट-फॉर ग्राफ का उपयोग डेडलॉक अवॉइडेंस के लिए किया जा सकता है। यह हालांकि केवल छोटे डेटाबेस के लिए उपयोगी है क्योंकि यह बड़े डेटाबेस में काफी जटिल हो सकता है।

वेट-फॉर ग्राफ (Wait-for Graph)

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

DBMS में डेडलॉक

डेडलॉक इग्नोर - ऑस्ट्रिच एल्गोरिदम (Ignore Deadlock - Ostrich Algorithm)

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


  1. DBMS में वन-टू-मैनी या मैनी-टू-वन रिलेशनशिप DBMS में वन-टू-मैनी या मैनी-टू-वन रिलेशनशिप

    DBMS में एक रिलेशनशिप वन-टू-मैनी या मैनी-टू-वन हो सकती है। आइए उदाहरणों के साथ देखें कि इसका क्या अर्थ है: वन-टू-मैनी रिलेशनशिप (One-to-Many Relationship) DBMS में वन-टू-मैनी रिलेशनशिप एक एंटिटी के इंस्टेंस और दूसरी एंटिटी के एक से अधिक इंस्टेंस के बीच का संबंध है। संबंध को इस प्रकार दिखाया जा सकता

  1. DBMS में डेटा डिक्शनरी DBMS में डेटा डिक्शनरी

    डेटा डिक्शनरी में डेटाबेस मेटाडेटा होता है। इसमें डेटाबेस में ऑब्जेक्ट के बारे में रिकॉर्ड होते हैं। डेटा डिक्शनरी में क्या होता है डेटा डिक्शनरी में निम्नलिखित जानकारी होती है: डेटाबेस में टेबल के नाम टेबल के कंस्ट्रेंट यानी की, रिलेशनशिप, आदि टेबल के कॉलम जो एक दूसरे से संबंधित हैं टेबल का मालिक

  1. DBMS में फंक्शनल डिपेंडेंसी DBMS में फंक्शनल डिपेंडेंसी

    फंक्शनल डिपेंडेंसी क्या है?DBMS में फंक्शनल डिपेंडेंसी, जैसा कि नाम से पता चलता है, एक टेबल की विशेषताओं के बीच एक संबंध है जो एक-दूसरे पर निर्भर हैं। E. F. Codd द्वारा पेश किया गया, यह डेटा रिडंडेंसी को रोकने और खराब डिजाइन के बारे में जानने में मदद करता है।अवधारणा को पूरी तरह से समझने के लिए, मान