Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL InnoDB:`अपडेट के लिए` और `शेयर मोड में लॉक` के बीच अंतर

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

दोनों 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 से बढ़ा हुआ है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लैटिन1 एन्कोडेड कॉलम में UTF-8 वर्णों का पता कैसे लगाएं - MySQL

  2. MySQL त्रुटि पुन:उत्पन्न करें:सर्वर ने कनेक्शन बंद कर दिया (नोड.जेएस)

  3. लोड डेटा कमांड के बिना डेटाबेस को पॉप्युलेट करना

  4. अद्वितीय तालिका/उपनाम नहीं

  5. MySQL कार्यक्षेत्र:क्वेरी में त्रुटि (1064):लाइन 1 पर 'दृश्यमान' के पास सिंटैक्स त्रुटि