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

Mysql में समानांतर लेनदेन

यह सब ISOLATION LEVEL . पर निर्भर करता है आपने सेट किया है।

आप इस क्वेरी के साथ देख सकते हैं कि आपने किसे सेट किया है:

select @@global.tx_isolation, @@session.tx_isolation;

अलगाव के विभिन्न स्तरों की व्याख्या करने से पहले, मैं समझाता हूँ कि वे किन समस्याओं से बचने की कोशिश कर रहे हैं:

  • गंदा पढ़ा :अभी तक समाप्त नहीं हुए लेन-देन का डेटा दूसरे लेनदेन द्वारा पढ़ा जाता है।

  • अपडेट खो गया :दो लेन-देन समानांतर में एक तालिका में एक प्रविष्टि को संशोधित करते हैं। जब दोनों लेन-देन समाप्त हो जाते हैं, तो केवल एक संशोधन लागू होता है।

  • गैर-दोहराए जाने योग्य पठन :दोबारा पढ़ने से अलग-अलग परिणाम मिलते हैं।

  • प्रेत पढ़ा :लेन-देन के दौरान कोई अन्य लेन-देन तालिका प्रविष्टियों को जोड़ता या हटाता है।

अब विभिन्न अलगाव स्तरों के लिए।

अनकमिटेड पढ़ें :
इस आइसोलेशन लेवल के साथ रीड ऑपरेशंस किसी भी तरह के लॉक को नजरअंदाज करते हैं, इसलिए ऊपर बताई गई कोई भी समस्या हो सकती है।

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

दोहराने योग्य पढ़ें :
इस आइसोलेशन स्तर के साथ यह सुनिश्चित किया जाता है कि पुनरावर्ती पठन संचालन हमेशा एक ही परिणाम देता है जब पैरामीटर समान होते हैं। लेन-देन की कुल अवधि के लिए पढ़ने और लिखने के संचालन के लिए ताले निर्धारित किए जाते हैं। इसलिए केवल प्रेत पाठ हो सकता है।

धारावाहिक :
उच्चतम अलगाव स्तर गारंटी देता है, कि समानांतर चलने वाले लेनदेन का परिणाम वही है जैसे लेनदेन एक के बाद एक चल रहे होंगे। अधिकांश डेटाबेस वास्तव में उन लेनदेन को एक के बाद एक नहीं चलाते हैं, यह बहुत अधिक प्रदर्शन हानि होगी। इसलिए ऐसा हो सकता है कि एक लेन-देन निरस्त हो जाए। उदाहरण के लिए MySQL इसे MVCC (मल्टी-वर्जन कंसुरेंसी कंट्रोल) के साथ महसूस करता है। अगर आप और जानना चाहते हैं तो इसे गूगल करें। यह इस उत्तर के लिए बहुत अधिक है।

इस सभी तालिका में यह भी समझाता है:

                 | Lost updates | Dirty Read | Non-Repeatable Read | Phantom Read
---------------------------------------------------------------------------------
Read Uncommitted | possible     | possible   | possible            | possible
Read Committed   | impossible   | impossible | possible            | possible
Repeatable Read  | impossible   | impossible | impossible          | possible
Serializable     | impossible   | impossible | impossible          | impossible
  • इसमें मैन्युअल एंट्री इसके बारे में कुछ और जानकारी है और अलगाव स्तर कैसे सेट करें।

यह सब संबंधपरक डेटाबेस प्रबंधन प्रणालियों के लिए सिर्फ सिद्धांत है। चूंकि MySQL MVCC (बहु संस्करण संगामिति नियंत्रण) का उपयोग करता है, हालांकि, InnoDB और दोहराने योग्य रीड आइसोलेशन स्तर का उपयोग करते समय फैंटम रीड नहीं होता है .
मैनुअल :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql और mysql2 रत्न में क्या अंतर है

  2. जहां INNER JOIN . से पहले क्लॉज

  3. MySQL IN स्टेटमेंट के लिए PDO बाइंडिंग मान

  4. एक जेपीए/हाइबरनेट एनोटेशन का उपयोग कर एक इंस्टेंस वैरिएबल में एक MySQL char (n) कॉलम को कैसे मैप करें?

  5. Amazon RDS Multi-AZ विफलता को संभालने के लिए GlassFish JDBC कनेक्शन पूल को कॉन्फ़िगर करें