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

Oracle 11g - धीमी समानांतर सम्मिलित चयन का अनुकूलन कैसे करें?

आंकड़ों में सुधार करें। पंक्तियों की अनुमानित संख्या 1 है, लेकिन पंक्तियों की वास्तविक संख्या 7 मिलियन से अधिक और गिनती है। यह निष्पादन योजना को हैश जॉइन के बजाय नेस्टेड लूप का उपयोग करने का कारण बनता है। नेस्टेड लूप कम मात्रा में डेटा के लिए बेहतर काम करता है और हैश जॉइन बड़ी मात्रा में डेटा के लिए बेहतर काम करता है। इसे ठीक करना उतना ही आसान हो सकता है जितना कि प्रासंगिक तालिकाओं में सटीक, वर्तमान आँकड़े सुनिश्चित करना। यह आमतौर पर डिफ़ॉल्ट सेटिंग्स के साथ आंकड़े एकत्र करके किया जा सकता है, उदाहरण के लिए:exec dbms_stats.gather_table_stats('SIRS_UATC1', 'TBL_RECON_PM');

अगर इससे कार्डिनैलिटी अनुमान में सुधार नहीं होता है, तो डायनेमिक सैंपलिंग संकेत का उपयोग करके देखें, जैसे कि /*+ dynamic_sampling(5) */ . इस तरह के लंबे समय तक चलने वाले प्रश्न के लिए अगर यह एक बेहतर योजना की ओर ले जाता है तो यह थोड़ा अतिरिक्त समय अप-फ्रंट सैंपलिंग डेटा खर्च करने के लायक है।

ऑब्जेक्ट-लेवल पैरेललिज़्म के बजाय स्टेटमेंट-लेवल पैरेललिज़्म का इस्तेमाल करें। समानांतर एसक्यूएल के साथ यह शायद सबसे आम गलती है। यदि आप वस्तु-स्तरीय समानता का उपयोग करते हैं तो संकेत को उपनाम . का संदर्भ देना चाहिए वस्तु का। 11gR2 के बाद से वस्तुओं को निर्दिष्ट करने के बारे में चिंता करने की कोई आवश्यकता नहीं है। इस कथन को केवल एक संकेत की आवश्यकता है:INSERT /*+ PARALLEL(16) APPEND */ ... . ध्यान दें कि NOLOGGING वास्तविक संकेत नहीं है।



  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 सेलेक्ट स्टेटमेंट से वापसी संख्या

  2. Oracle डाटाबेस भाग 2 में तत्काल निष्पादन के साथ तालिका डीडीएल बनाएं

  3. Oracle SQL डेवलपर में एक्ज़ीक्यूट एक्सप्लोरेशन प्लान के परिणामों को समझना

  4. Oracle में गतिरोध

  5. पीएल/एसक्यूएल:मैं एक प्रक्रिया में उपयोगकर्ता इनपुट को कैसे संकेत दूं?