2011-08-09 14 views
11

हमारे अनुप्रयोगों में से एक में, हमारे पास एक विशाल सामग्री वाला दृश्य है जो दिन में तीन बार ताज़ा करता है, और ताज़ा करने में सात घंटे लगते हैं। (आदर्श नहीं, मुझे पता है)। यह मुझे परेशान करता है, क्योंकि मैंने निश्चित रूप से सोचा था कि उपयोगकर्ता और सत्र इस भौतिक दृश्य को तब तक नहीं पहुंचा सकते जब इसे ताज़ा किया जा रहा था, लेकिन स्पष्ट रूप से वे कर सकते हैं! (रीफ्रेश का प्रकार पूर्ण रीफ्रेश करें)ओरेकल - पूर्ण रीफ्रेश के दौरान मटेरियलाइज्ड व्यू अभी भी सुलभ है। यह कैसे काम करता है?

पूरी तरह से ताज़ा करने के दौरान, मेरी समझ के लिए, मौजूदा डेटासेट गिरा दिया गया है और क्वेरी फिर से निष्पादित की जाती है। यदि यह सत्य है, तो भौतिक दृश्य को रीफ्रेश किए जाने पर उपयोगकर्ता/अन्य सत्र भौतिक दृश्य तक पहुंचने में सक्षम कैसे हैं?

+0

मुझे विश्वास है कि इसे कहा जाएगा: एक पठनीय-दृश्य-दृश्य। इसका मतलब है कि, जब भी कोई पंक्ति संशोधित होती है, मूल पंक्ति संरक्षित होती है क्योंकि लेनदेन के अंत तक कोई उस तालिका से पूछताछ कर रहा था। – Randy

उत्तर

15

दो अलग-अलग तरीके हैं जो एक पूर्ण ताज़ा हो सकता है - एक परमाणु ताज़ा या गैर-परमाणु ताज़ा। एक परमाणु ताज़ा बस भौतिक दृश्य में सभी पंक्तियों को हटाने के लिए एक हटा देता है और फिर नया डेटा डालने के लिए एक INSERT करता है। यह सब एक ही लेनदेन के भीतर है, इसलिए ओरेकल के मानक बहु-संस्करण पढ़ने स्थिरता आर्किटेक्चर से ओरेकल अन्य सत्रों को पुराने डेटा को रीफ्रेश पूरा होने तक दिखाता है। एक गैर-परमाणु ताज़ा करने में, ओरेकल भौतिक दृश्य पर एक ट्रंकेट करता है और फिर नया डेटा डालने के लिए प्रत्यक्ष-पथ INSERT करता है। यह काफी अधिक कुशल है लेकिन चूंकि TRUNCATE डीडीएल है, इसका मतलब है कि पुराने डेटा रीफ्रेश के दौरान अन्य सत्रों के लिए दृश्यमान नहीं है।

+0

ग्रेट उत्तर, धन्यवाद! – contactmatt

संबंधित मुद्दे