किसी भी प्रश्न के लिए उपलब्ध समानता (डीओपी) की डिग्री को सीमित करें


11

Oracle Exadata (11gR2) पर, हमारे पास अपेक्षाकृत गोमांस डेटाबेस है।

  • cpu_count 24 है
  • समानांतर_सर्वर_बंध 2 है
  • पैरेलल_थ्रेड्स_पर_सीपीयू 2 है

हमने ओरेकल एंटरप्राइज मैनेजर (ओईएम) में अवलोकन के माध्यम से उल्लेख किया, कि प्रश्नों को क्रमिक रूप से निष्पादित किए जाने के कारण यह प्रदर्शन भयानक था। इसे हल करने के लिए, समानता का लाभ उठाने के लिए सभी तालिकाओं, भौतिक विचारों और अनुक्रमित को बदल दिया गया। उदाहरण के लिए:

ALTER TABLE SOME_TABLE PARALLEL (DEGREE DEFAULT INSTANCES DEFAULT);

प्रणाली को समानांतरकरण चालू करने के लिए बदल दिया गया था:

ALTER SYSTEM SET PARALLEL_DEGREE_POLICY = 'AUTO';

इससे बेहतर प्रदर्शन हुआ लेकिन हमने कभी-कभी ओईएम में देखा कि एक एकल क्वेरी 96 (सभी उपलब्ध संसाधन) का एक डीओपी बाँध देगी। इसके परिणामस्वरूप बाद के प्रश्नों को 1 के डीओपी (कोई समानांतर नहीं) के रूप में डाउनग्रेड किया गया। हॉगिंग क्वेरी पूरी होने तक खराब प्रदर्शन के परिणामस्वरूप।

इसे हल करने के लिए हमने किसी भी प्रश्न के लिए उपलब्ध डीओपी को सीमित करने की कोशिश की:

ALTER SYSTEM SET PARALLEL_DEGREE_LIMIT = 24;

इसका कोई असर नहीं हुआ। हम अक्सर उन प्रश्नों का निरीक्षण करते हैं जो सीमा से अधिक उपयोग करेंगे (आमतौर पर 48 या 96, लेकिन कोई वास्तविक पैटर्न नहीं)।

हम सभी उपलब्ध संसाधनों को हॉग करने से किसी एक क्वेरी को कैसे रोक सकते हैं?

जवाबों:


8

समानांतर सर्वर सेट: PARALLEL_DEGREE_LIMIT समानांतरवाद की डिग्री को सीमित करता है, लेकिन अगर आपकी क्वेरी सॉर्ट या समूहबद्ध हो रही है तो समानांतर प्रक्रियाओं की संख्या दो बार हो सकती है (दो-सर्वर सेट अंतर-प्रक्रिया समानांतरता को सक्षम करने के लिए)। यह बताता है कि क्यों आप 24 की सीमा के साथ भी 48 समानांतर प्रक्रियाओं को देखेंगे। ऐसा तब भी होता है जब आप डीओपी को सीमित करने के लिए संसाधन प्रबंधक का उपयोग करते हैं।

समानांतर संकेत: PARALLEL_DEGREE_LIMIT केवल उन बयानों पर लागू होता है जो समानता के ऑटो डिग्री का उपयोग करते हैं। कोई भी कथन जो हार्ड-कोडित डिग्री, या यहां तक ​​कि किसी भी प्रकार के ऑब्जेक्ट-लेवल समानांतर संकेत का उपयोग करता है, सीमा की उपेक्षा करेगा। यदि आपके पास वे संकेत हैं, तो यह समझा सकता है कि आप 96 बार क्यों देखते हैं।

IO कैलिब्रेट करें: हो सकता है कि स्वचालित DOP का उपयोग नहीं किया जा रहा है, और इस प्रकार सीमा का पालन नहीं किया जा रहा है, क्योंकि IO को कैलिब्रेट नहीं किया गया था । यह क्वेरी आपको बताएगी कि क्या IO कैलिब्रेटेड था:

select * from V$IO_CALIBRATION_STATUS;

मैंने इस समस्या को पहले देखा है, लेकिन मेरी वर्तमान प्रणाली कैलिब्रेटेड नहीं है और स्वचालित डीओपी ठीक काम करने लगता है। आप बता सकते हैं कि क्या यह वास्तव में व्याख्या योजना के नोट्स अनुभाग को देखकर एक मुद्दा है। यदि आप ऐसा कुछ देखते हैं जैसे - automatic DOP: Computed Degree of Parallelism is 2आप ठीक हैं, लेकिन आप देखना नहीं चाहते हैं automatic DOP: skipped because of IO calibrate statistics are missing

PARALLEL_MAX_SERVERS बढ़ाएं: समानांतर सर्वर से बाहर चलने के बारे में चिंता करने के बजाय, मैं आपको सलाह दूंगा कि आप PARALLEL_MAX_SERVERS को महत्वपूर्ण रूप से बढ़ाएं। आपको अपनी स्मृति सेटिंग के आधार पर कम से कम डिफ़ॉल्ट मान , PARALLEL_THREADS_PER_CPU x CPU_COUNT x समवर्ती_परिवर्तमान x 5, 240 और 960 के बीच वापस जाने का प्रयास करना चाहिए ।

वे उच्च संख्याएँ कई DBAs के लिए हास्यास्पद लगती हैं, लेकिन वे वास्तव में निम्नलिखित कारणों से बहुत मायने रखते हैं:

  • अधिकांश लोगों की तुलना में ओरेकल समानांतर सर्वर अधिक हल्के वजन के होते हैं। (और शायद ही कभी कोई इसका परीक्षण करता है, वे सिर्फ एक स्थिति पाते हैं जहां एक बड़ा डीओपी एक समस्या का कारण बनता है और यह मान लेता है कि उच्च डीओपी हमेशा खराब होता है।)
  • GUI टूल में एक एडहॉक क्वेरी को चलाना आम बात है जो केवल पहले 50 पंक्तियों को पुनर्प्राप्त करता है, लेकिन फिर भी दर्जनों समानांतर सर्वर का उपयोग करता है। जब तक PARALLEL_MAX_SERVERS बहुत कम नहीं हैं, तब तक ये क्वेरीज़ किसी भी महत्वपूर्ण संसाधन का उपभोग नहीं कर रही हैं। तब लोगों को पूरी तरह से उचित प्रश्नों को चलाने के लिए चिल्लाया जाता है, जिससे कुछ बदसूरत स्थिति हो सकती है।
  • एक एकल क्वेरी के लिए एक बहुत बड़ी डीओपी हमेशा खराब नहीं होती है। हर कोई मानता है कि यदि आप डीओपी को बढ़ाते रहेंगे, तो ओवरहेड बहुत अधिक हो जाएगा और प्रदर्शन में काफी गिरावट आएगी। लेकिन कई प्रणालियों पर मैंने पाया है कि एक हास्यास्पद उच्च डीओपी बेहतर प्रदर्शन को जन्म देगा, हालांकि निश्चित रूप से कम रिटर्न है, और यह अन्य सत्रों के लिए बहुत अनुचित हो सकता है। लेकिन सिर्फ अनुमान नहीं है, यह परीक्षण; एक प्रश्न लें और इसे 1000 तक के सभी प्रकार के डीओपी के साथ चलाएं। आप आश्चर्यचकित हो सकते हैं।
  • हां, बहुत ज्यादा समानतावाद बुरा हो सकता है। लेकिन सिस्टम के लिए क्या बदतर है, सत्रों की इष्टतम संख्या से थोड़ा अधिक है, या सीरियल के लिए एक क्वेरी को मजबूर करना और मूल रूप से एक महत्वपूर्ण नौकरी को मारना है? मनमानी सीमाएं शुरू करने से पहले आपको सिस्टम की निगरानी करनी चाहिए।

वाह! धन्यवाद, यहाँ लेने के लिए बहुत कुछ है और बहुत उपयोगी सलाह है।
ग्रेनेड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.