यह पोस्ट Oracle® में SQL प्रोफ़ाइल और बेसलाइन के बीच अंतर को हाइलाइट करती है और बताती है कि क्वेरी को ट्यून करते समय यह कैसे काम करता है।
अनुकूलक, प्रोफ़ाइल और आधार रेखा
उच्च स्तर पर, ये तीन तत्व एक साथ निम्न प्रकार से कार्य करते हैं:
-
क्वेरी ऑप्टिमाइज़र क्वेरी निष्पादन के लिए सर्वोत्तम योजना प्राप्त करने के लिए सिस्टम सांख्यिकी, बाइंड वैरिएबल और संकलन जैसी जानकारी का उपयोग करता है। हालांकि, कभी-कभी इनपुट दोष एक उप-इष्टतम योजना की ओर ले जाते हैं।
-
SQL प्रोफ़ाइल में सहायक जानकारी होती है जो इस समस्या को कम करती है। वे इन गलतियों को कम करते हैं और अनुकूलक को सर्वोत्तम योजना चुनने में मदद करते हैं।
-
SQL स्टेटमेंट के लिए SQL प्लान बेसलाइन में स्वीकृत योजनाओं का एक सेट होता है। कथन को पार्स करने के बाद, अनुकूलक स्वीकृत योजनाओं के सेट में से सर्वश्रेष्ठ योजना का चयन करता है। यदि लागत अनुकूलक को एक और अच्छी योजना मिलती है, तो यह योजना के इतिहास में नई योजना को जोड़ता है। हालांकि, अनुकूलक नई योजना का उपयोग तब तक नहीं करता जब तक कि यह सत्यापित नहीं कर लेता कि यह वर्तमान में स्वीकृत योजना से बेहतर प्रदर्शन करेगी।
इसे इस तरह से सोचें:एसक्यूएल प्रोफाइल सबसे अच्छी योजना का चयन करने में मदद करने के लिए अनुकूलक को जानकारी देते हैं लेकिन अनुकूलक को किसी विशिष्ट योजना का चयन करने के लिए मजबूर नहीं करते हैं। एसक्यूएल योजना आधार रेखा अनुकूलक योजना चयन को स्वीकृत योजनाओं के एक सेट तक सीमित करती है। यदि आप चाहते हैं लागत-आधारित योजनाओं पर विचार करें, उन्हें योजनाओं के स्वीकृत बेसलाइन सेट में शामिल करें।
यदि आप चाहते हैं कि अनुकूलक कम से कम लागत वाली योजना का उपयोग करे और नवीनतम आंकड़ों का उपयोग करने की आवश्यकता हो तो SQL प्रोफाइल का उपयोग करें। जब आप किसी विशिष्ट योजना का उपयोग करना चाहते हैं तो आधार रेखा का उपयोग करें। अगर SQL प्लान बेसलाइन को स्वीकृत सेट से सबसे अच्छी योजना नहीं मिल सकती है, तो इसके बजाय SQL प्रोफ़ाइल का उपयोग करें।
SQL योजना प्रबंधन
SQL योजना प्रबंधन (SPM) में निम्नलिखित घटक होते हैं:
- प्लान कैप्चर करें
- योजना चयन
- योजना विकास
एसपीएम प्लान कैप्चर
जब आप किसी स्टेटमेंट को निष्पादित करते हैं, तो सिस्टम उसे हार्ड पार्स करता है और उपलब्ध SQL प्रोफाइल के अनुसार एक कॉस्टप्लान तैयार करता है। लागत-आधारित योजना का चयन करने के बाद, यह SQL योजना बेसलाइन में उपलब्ध योजनाओं की तुलना करता है। यदि कोई लागत-आधारित योजना स्वीकृत योजनाओं में से किसी एक से मेल खाती है, तो आप उस योजना का उपयोग कर सकते हैं। यदि योजना मेल नहीं खाती है, तो सिस्टम इसे योजना आधार रेखा में एक अस्वीकृत योजना के रूप में जोड़ देता है।
एसपीएम योजना चयन
जब आप बेसलाइन योजना के साथ SQL कथन निष्पादित करते हैं, तो यह उस SQL के लिए सर्वोत्तम योजना का विकल्प चुनता है। अनुकूलक उसी प्रक्रिया का उपयोग करता है। उपलब्ध एसक्यूएलप्रोफाइल प्रत्येक योजना के लिए अनुमानित लागत को भी प्रभावित करता है और उसी के अनुसार एक योजना का चयन करता है।
एसपीएम योजना विकास
एसपीएम का अंतिम घटक अस्वीकृत योजनाओं का विकास है, जो स्वीकृत योजनाओं के विरुद्ध अस्वीकृत योजनाओं का परीक्षण करता है। यह प्रक्रिया एक प्रश्न और आवश्यक सीपीयू संसाधनों द्वारा लिए गए समय को ध्यान में रखते हुए सर्वोत्तम योजना का आकलन करती है। यह क्वेरी की लागत के अनुसार सबसे अच्छी योजना को स्वीकार करता है। यदि कोई SQL प्रोफ़ाइल उपलब्ध है, तो यह अनुमानित लागत को प्रभावित करती है।
प्रोफाइल बनाम बेसलाइन तुलना
निम्न तालिका, https://www.cnblogs.com/princessd8251/articles/3637461.html से, SQL प्रोफ़ाइल और SQL योजना आधार रेखा की तुलना करती है:
आर्किटेक्चर
निम्न छवि SQL योजना बेसलाइन आर्किटेक्चर दिखाती है:
छवि स्रोत:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/)
SQL प्लान बेसलाइन लोड करें
निम्न छवि SQL योजना आधार रेखा को लोड करने के दो तरीके दिखाती है:
छवि स्रोत:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/
पहली विधि से, आप OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES सेट कर सकते हैं TRUE
. के लिए आरंभीकरण पैरामीटर स्वचालित योजना कैप्चर का उपयोग करने के लिए। यह इनिशियलाइज़ेशन पैरामीटर FALSE
है डिफ़ॉल्ट रूप से, इसलिए इसे TRUE
. पर सेट करें जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:
दूसरी विधि से, आप DBMS_SPM . का उपयोग कर सकते हैं SQL प्लान बेसलाइन को मैन्युअल रूप से प्रबंधित करने के लिए पैकेज। निम्न उदाहरण में दिखाए गए अनुसार SQL ट्यूनिंग सेट से योजनाओं को लोड करें:
SQL प्लान बेसलाइन को मैन्युअल रूप से लोड करें
प्लान बेसलाइन को मैन्युअल रूप से लोड करने के लिए निम्न कमांड का उपयोग करें:
SQL प्लान बेसलाइन उपयोग की जांच करें
SQL प्लान बेसलाइन लोड करने के बाद, आपको यह देखने के लिए SQL को निष्पादित करने की आवश्यकता है कि क्या ऑप्टिमाइज़र SQL प्लान बेसलाइन का उपयोग कर रहा है। आप SQL_TEXT और योजना के नाम का उपयोग करके SQL प्लान बेसलाइन को क्वेरी कर सकते हैं:
एसक्यूएल प्लान बेसलाइन प्रदर्शित करें
SQL प्लान बेसलाइन प्रदर्शित करने के लिए निम्न क्वेरी चलाएँ:
एसक्यूएल प्लान बेसलाइन ड्रॉप करें
SQL प्लान बेसलाइन को छोड़ने के लिए, यह जाँचने के लिए निम्न क्वेरी चलाएँ कि कौन सा SQL प्लांट ऑप्टिमाइज़र उपयोग कर रहा है:
फिर, योजना के उपयोग में आने के बाद, आधार रेखा को छोड़ने के लिए निम्न आदेश चलाएँ:
Oracle SQL प्रोफ़ाइल
SQL ट्यूनिंग सलाहकार, जिसे आप Oracle Enterprise Manager (OEM) के माध्यम से या कमांड-लाइन क्वेरी का उपयोग करके ट्रिगर करते हैं, SQLstatement के लिए SQL प्रोफ़ाइल उत्पन्न कर सकता है। इस प्रोफ़ाइल में कथन के बारे में अतिरिक्त जानकारी शामिल है।
उदाहरण
इस उदाहरण में, आप पहले SQL ट्यूनिंग सलाहकार को sql_id के विरुद्ध चलाते हैं और फिर SQL प्रोफ़ाइल पर संचालन निष्पादित करते हैं:
1. SQL ट्यूनिंग सलाहकार चलाएँ
sql_id, 6dkrnbx1zdwy38
के लिए निम्न SQL ट्यूनिंग सलाहकार कोड चलाएँ :
निम्न DBMS_SQLTUNE.report_tuning_task चलाएँ अनुशंसाओं के लिए:
2. sql_profile को स्वीकार करें
sql_profile को स्वीकार करने के लिए निम्न कोड चलाएँ:
3. sql_profile का नाम जांचें
sql_profile नाम जाँचने के लिए निम्न क्वेरी का उपयोग करें:
4. sql_profile अक्षम करें
sql_profile को अक्षम करने के लिए निम्न कोड चलाएँ:
इसे सक्षम करने के लिए, मान को DISABLED
. से बदलें करने के लिए ENABLED
।
5. sql_profile छोड़ें
sql_profile को छोड़ने के लिए निम्न कोड चलाएँ:
निष्कर्ष
जब आप किसी SQL कथन को निष्पादित करते हैं, तो ऑप्टिमाइज़र क्वेरी को पार्स करने के लिए एक निष्पादन योजना बनाता है, हार्ड डिस्क से डेटा पुनर्प्राप्त करता है, और इसे मेमोरी में रखता है। SQL प्रोफ़ाइल और बेसलाइन ऑप्टिमाइज़र को समय और CPU की कम से कम खर्चीली योजना चुनने के लिए मार्गदर्शन करते हैं। लागत। एक अच्छी SQL योजना कुशलता से एक क्वेरी चलाती है और वांछित परिणाम तेजी से प्रदान करती है।
हमारी डेटाबेस सेवाओं के बारे में अधिक जानें।
कोई टिप्पणी करने या प्रश्न पूछने के लिए प्रतिक्रिया टैब का उपयोग करें। आप हमारे साथ बातचीत भी शुरू कर सकते हैं।