2010-01-27 11 views
28

में सभी कैश किए गए आइटम को साफ़ करने के लिए मैं ओरेकल डेटाबेस पर SQL क्वेरी ट्यून कर रहा हूं। मैं यह सुनिश्चित करना चाहता हूं कि भ्रामक प्रदर्शन परिणामों को रोकने के लिए प्रत्येक क्वेरी को चलाने से पहले सभी कैश किए गए आइटम साफ़ कर दिए जाएं। मैं साझा पूल को साफ (कैश एसक्यूएल से छुटकारा पाने के/योजनाओं की व्याख्या) और कैश बफर (संचित डेटा से छुटकारा पाने के) निम्न कमांड चलाकर:ओरेकल

alter system flush buffer_cache; 
alter system flush shared_pool; 

वहाँ है और मैं क्या करना चाहिए, या क्या यह पर्याप्त है?

धन्यवाद!

उत्तर

7

साझा पूल निस्तब्धता यह करना चाहिए, लेकिन टॉम Kyte को सूचीबद्ध नीचे कारण है कि आप परिणाम आप कुछ मामलों में उम्मीद कर रहे हैं नहीं मिल सकता है एक दो कारण हैं:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:6349391411093

+0

वाह, यह कुछ बहुत अच्छी जानकारी के साथ एक महान लिंक है। साझा करने के लिए धन्यवाद! –

3

तुम भी आंकड़े एकत्र करना चाहिए - या तो

begin 
    dbms_stats.gather_schema_stats('schema_name'); 
end; 

या

begin 
    dbms_stats.gather_database_stats; 
end; 
: अपने स्कीमा या यहाँ तक कि पूरे डेटाबेस के लिए

और उसके बाद साझा पूल साफ़ करें।

4

ध्यान रखें कि ऑपरेटिंग सिस्टम और हार्डवेयर भी कैशिंग करते हैं जो आपके परिणामों को छोड़ सकता है।

+1

हाँ, यह निश्चित रूप से कुछ है जब मैंने बफर कैश को साफ़ करने के बाद भी सामान्य से अधिक तेजी से चलने के बारे में सोचा है। पारितोषिक के लिए धन्यवाद! –

1

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