मैं दोनों के बीच के अंतर को समझने की कोशिश कर रहा हूं। मुझे जो मिला है, मैं उसका दस्तावेजीकरण करूंगा, इस उम्मीद में कि यह अगले व्यक्ति के लिए उपयोगी होगा।
दोनों LOCK IN SHARE MODE
और FOR UPDATE
सुनिश्चित करें कि कोई अन्य लेन-देन चयनित पंक्तियों को अपडेट नहीं कर सकता है। दोनों के बीच अंतर यह है कि वे डेटा पढ़ते समय तालों के साथ कैसा व्यवहार करते हैं।
LOCK IN SHARE MODE
दूसरे लेन-देन को उसी पंक्ति को पढ़ने से नहीं रोकता है जो लॉक की गई थी।
FOR UPDATE
उसी पंक्ति के अन्य लॉकिंग रीड को रोकता है (गैर-लॉकिंग रीड अभी भी उस पंक्ति को पढ़ सकते हैं; LOCK IN SHARE MODE
और FOR UPDATE
रीड लॉक कर रहे हैं)।
यह काउंटर अपडेट करने जैसे मामलों में मायने रखता है, जहां आप 1 स्टेटमेंट में वैल्यू पढ़ते हैं और दूसरे में वैल्यू अपडेट करते हैं। यहां LOCK IN SHARE MODE
का उपयोग कर रहे हैं 2 लेनदेन को समान प्रारंभिक मान पढ़ने की अनुमति देगा। इसलिए यदि दोनों लेन-देन द्वारा काउंटर को 1 से बढ़ा दिया गया था, तो अंतिम संख्या केवल 1 से बढ़ सकती है - क्योंकि दोनों लेन-देन शुरू में एक ही मान पढ़ते हैं।
FOR UPDATE
का उपयोग करना दूसरे लेन-देन को मूल्य पढ़ने से पहले एक किए जाने तक लॉक कर दिया होगा। यह सुनिश्चित करेगा कि काउंटर 2 से बढ़ा हुआ है।