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

नॉन-रिपीटेबल रीड और फैंटम रीड में क्या अंतर है?

विकिपीडिया से (जिसमें इसके लिए महान और विस्तृत उदाहरण हैं):

<ब्लॉकक्वॉट>

एक गैर-दोहराने योग्य रीड तब ​​होता है, जब लेन-देन के दौरान, एक पंक्ति को दो बार पुनर्प्राप्त किया जाता है और पंक्ति के भीतर मान रीड के बीच भिन्न होते हैं।

और

<ब्लॉकक्वॉट>

एक फ़ैंटम रीड तब ​​होता है, जब लेन-देन के दौरान, दो समान क्वेरी निष्पादित की जाती हैं, और दूसरी क्वेरी द्वारा लौटाई गई पंक्तियों का संग्रह पहले से अलग होता है।

सरल उदाहरण:

  • उपयोगकर्ता A एक ही क्वेरी को दो बार चलाता है।
  • बीच में, उपयोगकर्ता B एक लेन-देन करता है और प्रतिबद्ध होता है।
  • गैर-दोहराए जाने योग्य पठन:उपयोगकर्ता A द्वारा क्वेरी की गई A पंक्ति का दूसरी बार एक अलग मान है।
  • फैंटम रीड:क्वेरी में सभी पंक्तियों का मान पहले और बाद में समान है, लेकिन अलग-अलग पंक्तियों का चयन किया जा रहा है (क्योंकि बी ने कुछ हटा दिया है या डाला है)। उदाहरण:select sum(x) from table; यदि पंक्तियों को जोड़ा या हटा दिया गया है, तो प्रभावित पंक्तियों में से कोई भी स्वयं अपडेट नहीं किया गया है, भले ही एक अलग परिणाम लौटाएगा।
<ब्लॉकक्वॉट>

उपरोक्त उदाहरण में, किस आइसोलेशन स्तर का उपयोग किया जाए?

आपको किस अलगाव स्तर की आवश्यकता है यह आपके आवेदन पर निर्भर करता है। "बेहतर" अलगाव स्तर (जैसे कम समवर्ती) के लिए एक उच्च लागत है।

आपके उदाहरण में, आपके पास एक प्रेत पढ़ा नहीं होगा, क्योंकि आप केवल एक पंक्ति से चयन करते हैं (प्राथमिक कुंजी द्वारा पहचाना जाता है)। आपके पास गैर-दोहराने योग्य पठन हो सकता है, इसलिए यदि यह एक समस्या है, तो आप एक अलगाव स्तर रखना चाहेंगे जो इसे रोकता है। Oracle में, लेन-देन A, अद्यतन के लिए चयन भी जारी कर सकता है, फिर लेन-देन B, A के पूरा होने तक पंक्ति को नहीं बदल सकता।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में PL SQL कोड कैसे लपेटें?

  2. समूह एसक्यूएल (ओरेकल) द्वारा कुल चल रहा है

  3. Oracle 9i, Oracle 10g और Oracle 11g डेवलपर सुइट फॉर्म और रिपोर्ट ट्यूटोरियल

  4. Oracle में <> का क्या अर्थ है

  5. Oracle ऐप्स में इतिहास तालिकाएँ पैच करें (11i/R12.1/R12.2)