ओरेकल डेटाबेस में कमिट बनाम फास्ट कमिट बनाम कमिट क्लीनआउट


12

मैं सोच रहा था कि क्या कोई ओरेकल डेटाबेस से संबंधित उन 3 शब्दों के बीच के अंतर के बारे में मेरी समझ को सत्यापित कर सकता है।

कई स्रोत इन शर्तों को भ्रमित करते हैं और उन्हें विस्तार से नहीं बताते हैं, इसलिए जानकारी खोजने के लिए यह एक चुनौती थी।

मैं जो इकट्ठा करता हूं:

  1. कमेटी और फास्ट कमिटमेंट एक ही बात है, सभी कमिट्स फास्ट कमिट्स हैं।
  2. एक फास्ट कमिट अनिवार्य रूप से केवल लेन-देन पूर्ववत करने के लिए पूर्ववत / रोलबैक सेगमेंट हेडर के लेनदेन तालिका में ध्वज को अपडेट करता है। हालाँकि, वास्तविक ब्लॉक का पुनरीक्षित अर्थ नहीं है कि इच्छुक लेनदेन सूची (ITL) में पूर्ववत बाइट एड्रेस (UBA) जो डेटा ब्लॉक के हेडर में स्थित है, फिर भी संबंधित पूर्ववत खंड के लेनदेन तालिका को इंगित करता है। इसके अलावा, संबंधित पंक्तियों के लॉक बाइट जारी नहीं किए जाते हैं और आईटीएल में लॉक की संख्या अपरिवर्तित है (पंक्तियां अभी भी बंद हैं)।
  3. एक कमिट क्लीनआउट में, ब्लॉक का पुनरीक्षण किया जाता है और आईटीएल को प्रतिबद्ध SCN के साथ अपडेट किया जाता है। हालाँकि, ITL में लॉक की गिनती और प्रत्येक पंक्ति के साथ संग्रहीत लॉक बाइट अभी भी अपडेट नहीं किया गया है (पंक्ति अभी भी फास्ट कमिट की तरह लॉक है), इससे ब्लॉक बदले जाने के बावजूद रीडो उत्पन्न नहीं होता है।
  4. ब्लॉक जो सामान्य रूप से किए गए थे (== तेजी से प्रतिबद्ध) जब वे अगले स्पर्श किए जाते हैं (और रीडायरेक्ट उत्पन्न करते हैं) डिलेड ब्लॉक क्लीनआउट से गुजरेंगे।
  5. ब्लॉक जो कमिट किए गए थे, जब वे अगली बार टच किए गए हैं (और रिड्यूस उत्पन्न करते हैं) डिलेड लॉगिंग ब्लॉक क्लीनआउट से गुजरना होगा।

उम्मीद है कि कोई इन बिंदुओं को सत्यापित कर सकता है! धन्यवाद!

जवाबों:


6

आपके पास मूल बातें सही हैं। केवल एक प्रकार की प्रतिबद्धता है (कोई सामान्य , तेज ...)।

से अवधारणाओं डॉक :

जब कोई लेनदेन शुरू होता है, तो निम्नलिखित क्रियाएं होती हैं:

  • COMMIT के लिए एक सिस्टम चेंज नंबर (SCN) जेनरेट किया जाता है।

    संबंधित पूर्ववत टेबलस्पेस रिकॉर्ड के लिए आंतरिक लेन-देन तालिका, जो लेनदेन के लिए प्रतिबद्ध है। लेन-देन की संबंधित विशिष्ट SCN को लेन-देन तालिका में सौंपा और दर्ज किया गया है। "सीरियल अलगाव स्तर" देखें।

  • लॉग राइटर (LGWR) प्रक्रिया, रीडू लॉग बफ़र्स में शेष रीडो लॉग प्रविष्टियों को ऑनलाइन रीडो लॉग में लिखती है और ऑनलाइन एसएनओ लॉग को लेनदेन SCN लिखती है। यह परमाणु घटना लेन-देन की प्रतिबद्धता का गठन करती है।

  • Oracle डेटाबेस पंक्तियों और तालिकाओं पर आयोजित ताले को रिलीज़ करता है।

    जिन उपयोगकर्ताओं को अनधिकृत लेन-देन द्वारा आयोजित ताले पर प्रतीक्षा करने के लिए संलग्न किया गया था, उन्हें अपने काम के साथ आगे बढ़ने की अनुमति है।

  • Oracle डेटाबेस सेव पॉइंट को डिलीट करता है।

  • ओरेकल डाटाबेस एक प्रतिबद्ध क्लीनआउट करता है।

    यदि प्रतिबद्ध लेनदेन से डेटा वाले संशोधित ब्लॉक अभी भी SGA में हैं, और यदि कोई अन्य सत्र उन्हें संशोधित नहीं कर रहा है, तो डेटाबेस ब्लॉक से संबंधित लेन-देन की जानकारी को हटा देता है। आदर्श रूप से, COMMIT ब्लॉकों को साफ करता है ताकि बाद के चयन को इस कार्य को करने के लिए न हो।

यदि ब्लॉक अभी भी SGA में हैं, तो क्लीनआउट (रीडो के साथ पूर्ण) किया जाएगा।

सक्रिय प्रणालियों में, डिस्क के लिए लिखे जाने वाले एसजीएमए से बिना लेनदेन के ब्लॉक होना आम बात है। इस स्थिति में, ब्लॉक को छोड़ दिया जाता है और अगली क्वेरी जो ब्लॉक को छूती है, विलंबित ब्लॉक क्लीनआउट का प्रदर्शन करेगी (आपका बिंदु 5 सभी मामलों में नहीं होता है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.