"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > MySQL में आशावादी लॉकिंग कैसे कार्यान्वित की जा सकती है?

MySQL में आशावादी लॉकिंग कैसे कार्यान्वित की जा सकती है?

2024-11-07 को प्रकाशित
ब्राउज़ करें:398

How Can Optimistic Locking be Implemented in MySQL?

MySQL में आशावादी लॉकिंग: एक व्यापक स्पष्टीकरण

आशावादी लॉकिंग डेटाबेस प्रबंधन प्रणालियों में नियोजित एक तकनीक है जो डेटा टकराव को रोकने के लिए उपयोग की जाती है जो तब उत्पन्न हो सकती है एकाधिक उपयोगकर्ता एक ही डेटा को एक साथ अपडेट करने का प्रयास करते हैं। जबकि MySQL मूल रूप से आशावादी लॉकिंग का समर्थन नहीं करता है, इसे मानक SQL निर्देशों का उपयोग करके कार्यान्वित किया जा सकता है।

संकल्पना को समझना

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

MySQL में कार्यान्वयन

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

-- पंक्ति और उसके संस्करण का चयन करें वैल1, वैल2, संस्करण चुनें मेज से जहां iD = @theId; -- नये मानों की गणना करें -- ... - संस्करण की जाँच करके तालिका को अद्यतन करें तालिका अद्यतन करें सेट वैल1 = @newVal1, वैल2 = @newVal2, संस्करण = संस्करण 1 जहां iD = @theId और संस्करण = @पुराना संस्करण; - प्रभावित पंक्तियों की जाँच करें यदि @@ROWCOUNT = 1 -- परिवर्तन प्रतिबद्ध करें -- ... अन्य - टकराव को संभालें -- ... END IF;

लेनदेन बनाम गैर-लेनदेन

आशावादी लॉकिंग को लेन-देन के साथ या उसके बिना लागू किया जा सकता है। लेन-देन का उपयोग टकराव की स्थिति में सभी परिवर्तनों को वापस करने की क्षमता प्रदान करता है, लेकिन यह समवर्ती सीमाएं भी पेश कर सकता है। गैर-लेन-देन संबंधी आशावादी लॉकिंग संघर्षों का पता लगाने के लिए संस्करण कॉलम पर निर्भर करती है, और लेनदेन की आवश्यकता के बिना उन्हें संभालती है।
-- Select the row and its version
SELECT val1, val2, version
FROM theTable
WHERE iD = @theId;

-- Calculate new values
-- ...

-- Update the table, checking the version
UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2,
    version = version   1
WHERE iD = @theId
    AND version = @oldversion;

-- Check for affected rows
IF @@ROWCOUNT = 1
    -- Commit the changes
    -- ...
ELSE
    -- Handle collision
    -- ...
END IF;
निष्कर्ष

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

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3