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

लेन-देन में चुनिंदा बयानों को संलग्न करने का क्या मतलब है?

आप सही हैं:मानक अलगाव स्तर पर , read committed , आपको लेन-देन में चुनिंदा बयानों को लपेटने की आवश्यकता नहीं है। चुनिंदा बयानों को गंदे पढ़ने से बचाया जाएगा चाहे आप उन्हें लेनदेन में लपेटते हैं या नहीं।

connection 1:                          connection 2:

                                       begin transaction
                                       update user set name = 'Bill' where id = 1
select name from users where id = 1
                                       rollback transaction

सेलेक्ट स्टेटमेंट रोल्ड-बैक अपडेट को नहीं पढ़ेगा:इससे कोई फर्क नहीं पड़ता कि वे लेन-देन में लिपटे नहीं हैं।

अगर आपको रिपीटेबल रीड्स चाहिए , फिर डिफ़ॉल्ट लेनदेन में चयन लपेटने से मदद नहीं मिलती है:

connection 1:                          connection 2:

begin transaction
select name from users where id = 1
                                       update user set name = 'Bill' where id = 1
select name from users where id = 1
commit transaction

begin और commit कथन यहाँ मदद नहीं करेंगे:दूसरा select हो सकता है पुराना नाम पढ़ें, या यह हो सकता है नया नाम पढ़ें।

हालांकि, यदि आप उच्च आइसोलेशन स्तर पर चलते हैं, जैसे serializable या repeatable read , समूह को गैर-दोहराए जाने योग्य पठन से सुरक्षित किया जाएगा:

connection 1:                          connection 2:

set transaction isolation level
    repeatable read
begin transaction
select name from users where id = 1
                                       update user set name = 'Bill' where id = 1
select name from users where id = 1              |
commit transaction                               |
                                                 |--> executed here

इस परिदृश्य में, update पहला लेन-देन पूरा होने तक ब्लॉक रहेगा।

उच्च अलगाव स्तरों का शायद ही कभी उपयोग किया जाता है क्योंकि वे उन लोगों की संख्या को कम करते हैं जो एक ही समय में डेटाबेस में काम कर सकते हैं। उच्चतम स्तर पर, serializable , एक रिपोर्टिंग क्वेरी किसी भी अद्यतन गतिविधि को रोक देती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं एसएसआईएस पैकेज के भीतर अप्सर्ट (अपडेट और इंसर्ट) ऑपरेशन को कैसे अनुकूलित करूं?

  2. SQL सर्वर (T-SQL) में 'स्मॉलडेटटाइम' को 'डेटाटाइम' में बदलने के उदाहरण

  3. अमान्य उपयोग साइड-इफ़ेक्टिंग ऑपरेटर फ़ंक्शन के भीतर सम्मिलित करें

  4. SQL सर्वर 2019 में त्वरित डेटाबेस रिकवरी

  5. एक दृश्य पर चयन अनुमति दें, लेकिन अंतर्निहित वस्तुओं पर नहीं