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

प्रश्नों को अनुकूलित करने के लिए व्याख्या योजना का उपयोग कैसे करें?

मुझे यह भी लगता है कि आप Oracle का उपयोग कर रहे हैं। और मैं यह भी अनुशंसा करता हूं कि आप शुरुआत के लिए व्याख्या योजना वेब पेज देखें। अनुकूलन के लिए बहुत कुछ है, लेकिन इसे सीखा जा सकता है।

कुछ सुझाव इस प्रकार हैं:

सबसे पहले, जब कोई आपको अनुकूलित करने के लिए कार्य करता है, तो वे लगभग हमेशा अंतिम प्रदर्शन के बजाय स्वीकार्य प्रदर्शन की तलाश में रहते हैं। यदि आप किसी क्वेरी के चलने के समय को 3 मिनट से घटाकर 3 सेकंड कर सकते हैं, तो इसे कम करके 2 सेकंड तक न करें, जब तक कि आपसे ऐसा करने के लिए न कहा जाए।

दूसरा, यह सुनिश्चित करने के लिए एक त्वरित जांच करें कि आप जिन प्रश्नों का अनुकूलन कर रहे हैं वे तार्किक रूप से सही हैं। यह बेतुका लगता है, लेकिन मैं आपको यह नहीं बता सकता कि मुझसे धीमी गति से चलने वाली क्वेरी पर कितनी बार सलाह मांगी गई है, केवल यह पता लगाने के लिए कि यह कभी-कभी गलत उत्तर दे रही थी! और जैसा कि यह पता चला है, क्वेरी को डीबग करना अक्सर इसे गति देने के लिए निकला।

विशेष रूप से, व्याख्या योजना में "कार्टेशियन जॉइन" वाक्यांश देखें। यदि आप इसे वहां देखते हैं, तो संभावना बहुत अच्छी है कि आपको अनजाने में कार्टेशियन जॉइन मिल गया है। एक अनजाने कार्टेशियन जॉइन के लिए सामान्य पैटर्न यह है कि FROM क्लॉज कॉमा द्वारा अलग की गई टेबल को सूचीबद्ध करता है, और जॉइन की स्थिति WHERE क्लॉज में होती है। सिवाय इसके कि शामिल होने की शर्तों में से एक गायब है, ताकि Oracle के पास कार्टेशियन जॉइन करने के अलावा कोई विकल्प न हो। बड़ी तालिकाओं के साथ, यह एक प्रदर्शन आपदा है।

व्याख्या योजना में कार्टेशियन जॉइन देखना संभव है जहां क्वेरी तार्किक रूप से सही है, लेकिन मैं इसे ओरेकल के पुराने संस्करणों से जोड़ता हूं।

अप्रयुक्त यौगिक सूचकांक भी देखें। यदि कंपाउंड इंडेक्स के पहले कॉलम का उपयोग क्वेरी में नहीं किया जाता है, तो Oracle इंडेक्स को अक्षम रूप से उपयोग कर सकता है, या बिल्कुल नहीं। मैं एक उदाहरण देता हूं:

क्वेरी थी:

select * from customers    
where
     State = @State
     and ZipCode = @ZipCode

(डीबीएमएस ओरेकल नहीं था, इसलिए वाक्यविन्यास अलग था, और मैं मूल वाक्यविन्यास भूल गया हूं)।

इंडेक्स पर एक त्वरित नज़र ने उस क्रम में कॉलम (देश, राज्य, ज़िप कोड) वाले ग्राहकों पर एक इंडेक्स का खुलासा किया। मैंने पढ़ने के लिए क्वेरी बदल दी है

  select * from customers
   where Country = @Country
      and State = @State
      and ZipCode = @ZipCode

और अब यह लगभग 6 मिनट के बजाय लगभग 6 सेकंड में चला, क्योंकि अनुकूलक अच्छे लाभ के लिए सूचकांक का उपयोग करने में सक्षम था। मैंने एप्लिकेशन प्रोग्रामर्स से पूछा कि उन्होंने देश को मानदंड से क्यों हटा दिया, और यह उनका जवाब था:वे जानते थे कि सभी पतों में 'यूएसए' के ​​बराबर देश था, इसलिए उन्हें लगा कि वे उस मानदंड को छोड़कर क्वेरी को तेज कर सकते हैं!

दुर्भाग्य से, डेटाबेस पुनर्प्राप्ति का अनुकूलन वास्तव में कंप्यूटिंग समय से माइक्रोसेकंड को शेविंग करने जैसा नहीं है। इसमें डेटाबेस डिज़ाइन, विशेष रूप से अनुक्रमित, और कम से कम एक सिंहावलोकन को समझना शामिल है कि ऑप्टिमाइज़र अपना काम कैसे करता है।

आप आमतौर पर ऑप्टिमाइज़र से बेहतर परिणाम प्राप्त करते हैं जब आप इसे बेहतर बनाने की कोशिश करने के बजाय इसके साथ सहयोग करना सीखते हैं।

ऑप्टिमाइज़ेशन में तेज़ी आने के लिए शुभकामनाएँ!



  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 SQL सर्वर के OUTPUT INSERTED के समतुल्य है।*?

  2. ORA-12705:NLS डेटा फ़ाइलों या अमान्य वातावरण तक नहीं पहुँच सकता

  3. पर्ल डीबीआई - एकाधिक कथनों के साथ SQL स्क्रिप्ट चलाएं

  4. सरल Oracle चयन कथन वाक्य रचना

  5. Oracle LIMIT और 1000 कॉलम प्रतिबंध