2012-10-20 4 views
5

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

अद्यतन
के बाद से कुछ लोगों को लगता है इस विषय बंद है मेरे वर्तमान दृष्टिकोण निम्न करने के लिए है लगता है:

एक Oracle अनुसूची चेन कि PL/SQL (प्रोग्रामिंग भाषा मैं की एक श्रृंखला का आह्वान बनाएं वादा) एक छद्म-समांतर फैशन में भौतिक दृश्य को ताज़ा करने के लिए कार्य करता है। हालांकि, जैसा कि मैं एक प्रकार के डीबीए की स्थिति में गिर गया, मैं एक एल्गोरिदम और/या कुछ कोड के साथ एक डेटा समस्या को हल करने के लिए देख रहा हूँ।

+1

समापन के साथ इस मुद्दे:

यहाँ एक PL/SQL समारोह है कि यह तुम्हारे लिए पैदा करेगा है। – Woot4Moo

+0

फिर भी यह प्रोग्रामिंग प्रश्न नहीं है। – APC

+0

इसके अलावा, आपकी जिज्ञासा को क्या प्रेरित करता है? क्या आपके पास डेटा वेयरहाउस में कोई वास्तविक समस्या है जिसे हल करने की आवश्यकता है? – APC

उत्तर

1

ठीक है तो यहां समाधान है जिसके साथ मैं आया हूं, आपका माइलेज भिन्न हो सकता है और तथ्य के बाद किसी भी प्रतिक्रिया की सराहना की जाती है।

1) (नौकरियों)
2) डेटाबेस
में आवेदन से इंटरफेस के रूप में देखता है (नियमित तरह) का उपयोग श्रृंखला के समानांतर निष्पादन की ओरेकल समयबद्धक बनाने उपयोग का उपयोग: समग्र रणनीति निम्नलिखित करने के लिए था

create index baz on foo(bar) nologging 

लाभ: 3) निम्नलिखित materialized विचारों निम्नलिखित तरीके

create materialized view foo 
    parallel 
    nologging 
    never refresh 
    as 
    select statement 
जरूरत उपयोग के रूप में

में निर्मित किया जाना पर भरोसा करते हैं ई का यह है कि हम चरण 2 में वर्णित दृश्य को पुनर्निर्मित करने से पहले पृष्ठभूमि में भौतिक दृश्य बना सकते हैं। अब लाभ गतिशील रूप से नामित भौतिक दृश्य बना रहा है, जबकि दृश्य को उसी नाम से रखते हुए। कुंजी तब तक मूल भौतिक दृश्य को दूर नहीं करना है जब तक कि कोई नया समाप्त न हो जाए। यह त्वरित बूंदों की भी अनुमति देता है, क्योंकि देखभाल करने के लिए न्यूनतम पुनर्वितरण होता है। इसने 5 मिनट में ~ 1 बिलियन रिकॉर्ड्स पर भौतिक दृश्य निर्माण को सक्षम किया जो हर तीस मिनट में "रीफ्रेश" की हमारी आवश्यकता को पूरा करता था। इसके अलावा यह एक डेटाबेस नोड पर संभाला जा सकता है, इसलिए बाध्य हार्डवेयर के साथ भी, यह संभव है। के रूप में विषय dba.se है हो रही अपने प्रश्नों का उत्तर के मामले में अनिवार्य रूप से बेकार है

CREATE OR REPLACE procedure foo_bar as 
foo_view varchar2(500) := 'foo_'|| to_char(sysdate,'dd_MON_yyyy_hh_mi_ss'); 
BEGIN 
execute immediate 
'Create materialized view '|| foo_view || ' 
    parallel 
    nologging 
    never refresh 
    as 
    select * from cats'; 
END foo_bar; 
+0

क्या आप इसे ओरेकल आरएसी या एक्साडाटा पर चला रहे हैं? यदि आप वास्तव में ऐसा करते समय 1 बिल आइटम लोड कर रहे हैं, तो आपके पास बहुत मजबूत हार्डवेयर होना चाहिए। –

+0

@NWest केवल एक चीज जिसे मैं निश्चित रूप से जानता हूं वह 16 सीपीयू और ~ 128 जीबी रैम है। – Woot4Moo

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