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

पढ़ने के लिए प्रतिबद्ध और दोहराने योग्य पढ़ने के बीच अंतर

प्रतिबद्ध पढ़ें एक अलगाव स्तर है जो गारंटी देता है कि पढ़ा गया कोई भी डेटा प्रतिबद्ध था फिलहाल पढ़ा जाता है। यह पाठक को किसी भी मध्यवर्ती, अप्रतिबद्ध, 'गंदे' को पढ़ने से रोकता है। यह कोई वादा नहीं करता है कि यदि लेन-देन रीड को फिर से जारी करता है, तो उसे समान . मिलेगा डेटा, डेटा पढ़ने के बाद बदलने के लिए स्वतंत्र है।

पुनरावर्तनीय पठन एक उच्च अलगाव स्तर है, जो पढ़ने के लिए प्रतिबद्ध स्तर की गारंटी के अलावा, यह भी गारंटी देता है कि पढ़ा गया कोई भी डेटा बदल नहीं सकता , यदि लेन-देन उसी डेटा को फिर से पढ़ता है, तो यह पहले से पढ़ा गया डेटा जगह में, अपरिवर्तित और पढ़ने के लिए उपलब्ध होगा।

अगला अलगाव स्तर, क्रमबद्ध करने योग्य, एक और भी मजबूत गारंटी देता है:हर चीज को दोहराने योग्य पढ़ने की गारंटी के अलावा, यह भी गारंटी देता है कि नहीं नया डेटा बाद के पठन द्वारा देखा जा सकता है।

मान लें कि आपके पास कॉलम सी के साथ एक टेबल टी है जिसमें एक पंक्ति है, कहें कि इसका मान '1' है। और मान लें कि आपके पास निम्न जैसा एक सरल कार्य है:

BEGIN TRANSACTION;
SELECT * FROM T;
WAITFOR DELAY '00:01:00'
SELECT * FROM T;
COMMIT;

यह एक साधारण कार्य है जो तालिका T से दो पठन जारी करता है, उनके बीच 1 मिनट की देरी के साथ।

  • रीड कमिटेड के तहत, दूसरा SELECT कोई भी लौटा सकता है जानकारी। एक समवर्ती लेनदेन रिकॉर्ड को अपडेट कर सकता है, इसे हटा सकता है, नए रिकॉर्ड डाल सकता है। दूसरा चयन हमेशा नया . देखेगा डेटा।
  • दोहराए जाने योग्य पढ़ें के तहत दूसरा चयन कम से कम उन पंक्तियों को प्रदर्शित करने की गारंटी है जो पहले चयन अपरिवर्तित से लौटाई गई थीं . उस एक मिनट में समवर्ती लेन-देन द्वारा नई पंक्तियाँ जोड़ी जा सकती हैं, लेकिन मौजूदा पंक्तियों को हटाया या बदला नहीं जा सकता।
  • SERIALIZABLE के तहत दूसरे चयन को बिल्कुल देखने की गारंटी है पहली के समान पंक्तियाँ। समवर्ती लेन-देन द्वारा न तो कोई पंक्ति बदली जा सकती है, न ही हटाई जा सकती है, न ही नई पंक्तियाँ डाली जा सकती हैं।

यदि आप ऊपर दिए गए तर्क का पालन करते हैं तो आप जल्दी से महसूस कर सकते हैं कि सीरियल लेन-देन, जबकि वे आपके लिए जीवन को आसान बना सकते हैं, हमेशा पूरी तरह से अवरुद्ध होते हैं। हर संभव समवर्ती ऑपरेशन, क्योंकि उन्हें आवश्यकता होती है कि कोई भी किसी भी पंक्ति को संशोधित, हटा या सम्मिलित नहीं कर सकता है। .Net System.Transactions . का डिफ़ॉल्ट लेनदेन अलगाव स्तर दायरा क्रमबद्ध है, और यह आमतौर पर परिणामी खराब प्रदर्शन की व्याख्या करता है।

और अंत में, स्नैपशॉट अलगाव स्तर भी है। SNAPSHOT आइसोलेशन स्तर समान गारंटी देता है जो क्रमबद्ध करने योग्य है, लेकिन यह आवश्यक नहीं है कि कोई समवर्ती लेनदेन डेटा को संशोधित नहीं कर सकता है। इसके बजाय, यह प्रत्येक पाठक को दुनिया के अपने संस्करण (यह स्वयं का 'स्नैपशॉट') देखने के लिए मजबूर करता है। इससे प्रोग्राम करना बहुत आसान हो जाता है और साथ ही साथ बहुत स्केलेबल भी हो जाता है क्योंकि यह समवर्ती अपडेट को ब्लॉक नहीं करता है। हालाँकि, वह लाभ एक मूल्य के साथ आता है:अतिरिक्त सर्वर संसाधन खपत।

पूरक पढ़ता है:

  • डेटाबेस इंजन में अलगाव स्तर
  • समवर्ती प्रभाव
  • पंक्ति संस्करण-आधारित अलगाव स्तर चुनना


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर कर्सर के साथ Salesforce डेटा अपडेट कर रहा है

  2. SQL सर्वर में टेक्स्ट मान को UTF8 से ISO 8859-1 . में बदलें

  3. SQL सर्वर (T-SQL उदाहरण) में 'datetime2' को 'datetimeoffset' में बदलें

  4. क्या एएनएसआई जॉइन बनाम गैर-एएनएसआई जॉइन क्वेरी अलग-अलग प्रदर्शन करेगी?

  5. डेटाबेस में प्रत्येक तालिका में रिकॉर्ड की संख्या सूचीबद्ध करने की क्वेरी