Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> डेटाबेस

SQL प्लान बेसलाइन्स का लाभ उठाकर वातावरणों में क्वेरीज़ ऑप्टिमाइज़ करें

SQL प्लान प्रबंधन का परिचय

Oracle SQL प्लान प्रबंधन (SPM) Oracle डेटाबेस में एक सुविधा है जो एक क्वेरी के लिए सभी ऐतिहासिक निष्पादन योजनाओं को कैप्चर करती है। इसके साथ, आप SPM में उपलब्ध निष्पादन योजनाओं से अच्छी योजना के लिए एक बेसलाइन बना सकते हैं और उस बेसलाइन को सक्षम कर सकते हैं ताकि यह सुनिश्चित हो सके कि सिस्टम बेसलाइन से केवल अच्छी योजना चुनता है।

इस सुविधा का लाभ उठाने के लिए, आपको उस क्वेरी की sql_id पहचाननी होगी जो एक इंस्टेंस पर अच्छा प्रदर्शन कर रही है और दूसरे इंस्टेंस पर खराब प्रदर्शन कर रही है। आपको उस इंस्टेंस पर क्वेरी के अच्छे निष्पादन योजना ID, plan_hash_value, को भी कैप्चर करना होगा जहां यह अच्छी तरह से काम करती है।

एक इंस्टेंस से दूसरे इंस्टेंस में SQL बेस प्लान कॉपी करें

स्रोत इंस्टेंस से लक्ष्य इंस्टेंस में SQL बेस प्लान कॉपी करने के लिए निम्नलिखित चरणों का उपयोग करें:

  1. स्रोत इंस्टेंस पर क्वेरी चलाएं, जहां क्वेरी अच्छी तरह से काम करती है, ताकि क्वेरी कर्सर कैश में मौजूद हो।
  2. स्रोत इंस्टेंस पर, कर्सर कैश से क्वेरी के लिए SQL निष्पादन योजना को SPM में बेसलाइन के रूप में लोड करें।
  3. स्रोत इंस्टेंस पर एक स्टेजिंग टेबल बनाएं। इस टेबल का उपयोग स्रोत इंस्टेंस से लक्ष्य इंस्टेंस में निष्पादन योजना को माइग्रेट करने के लिए किया जाता है।
  4. स्रोत निष्पादन योजना, या बेसलाइन, को स्रोत इंस्टेंस पर स्टेजिंग टेबल में पैक करें।
  5. एक्सपोर्ट/इम्पोर्ट यूटिलिटी का उपयोग करके स्टेजिंग टेबल को स्रोत इंस्टेंस से लक्ष्य इंस्टेंस में स्थानांतरित करें।
  6. लक्ष्य इंस्टेंस पर स्टेजिंग टेबल से SQL प्लान को SPM में अनपैक करें।
  7. सत्यापित करें कि लक्ष्य इंस्टेंस पर बनाया गया बेसलाइन फिक्स्ड और स्वीकृत है ताकि अगली बार चलने पर क्वेरी के लिए इसे चुना जाए।
  8. लक्ष्य इंस्टेंस पर प्रदर्शन समस्या वाले SQL का परीक्षण करें और सत्यापित करें कि यह स्थानांतरित बेसलाइन को चुनता है।

उदाहरण निष्पादन

पहले के चरणों को निष्पादित करने के परिणामस्वरूप निम्नलिखित उदाहरणों के समान आउटपुट होता है।

चरण 1: स्रोत इंस्टेंस पर क्वेरी चलाएं

स्रोत इंस्टेंस पर SQL चलाएं और sql_id और plan_hash_value पहचानें। मान प्राप्त करने के लिए कर्सर कैश की जांच करें। इस मामले में, वे निम्नलिखित मान हैं:

  • sql_id: 9xva48wpnsmp6
  • plan_hash_value: 1572948408

चरण 2: प्लान को SPM में लोड करें

निम्नलिखित क्वेरी को निष्पादित करके इस अच्छी क्वेरी निष्पादन योजना को कर्सर कैश से SPM में बेसलाइन के रूप में लोड करें: (PL/SQL ब्लॉक दिखाया गया है)

चरण 3: स्रोत इंस्टेंस पर स्टेजिंग टेबल बनाएं

SQL> BEGIN
DBMS_SPM.CREATE_STGTAB_BASELINE(
table_name => 'SPM_STAGETAB',
table_owner => 'APPS',
tablespace_name => 'SYSAUX');
END;
/
PL/SQL procedure successfully completed.

चरण 4: बेसलाइन पैक करें

SQL> DECLARE
my_plans number;
BEGIN
my_plans := DBMS_SPM.PACK_STGTAB_BASELINE(
table_name => 'SPM_STAGETAB', enabled => 'yes',
table_owner => 'APPS',
plan_name => 'SQL_PLAN_d6j5asfazky54868c96c3',
sql_handle => 'SQL_d344aac395f978a4');
END;
/
PL/SQL procedure successfully completed.

चरण 5: स्टेजिंग टेबल को स्रोत से लक्ष्य इंस्टेंस में स्थानांतरित करें

स्रोत इंस्टेंस पर स्टेजिंग टेबल का एक्सपोर्ट बैकअप लें, फिर लक्ष्य इंस्टेंस पर इम्पोर्ट करें।

चरण 6: बेसलाइन अनपैक करें

लक्ष्य इंस्टेंस के SPM में स्टेजिंग टेबल से बेसलाइन अनपैक करें। अनपैक करने से पहले और बाद में काउंट लेकर सत्यापित करें।

चरण 7: बेसलाइन सत्यापित करें

लक्ष्य इंस्टेंस पर यह सत्यापित करने के लिए कमांड चलाएं कि बेसलाइन स्वीकृत और फिक्स्ड है। यदि फिक्स्ड नहीं है, तो DBMS_SPM.alter_sql_plan_baseline का उपयोग करके इसे फिक्स्ड करें।

चरण 8: लक्ष्य इंस्टेंस पर SQL क्वेरी का परीक्षण करें

लक्ष्य इंस्टेंस पर कमांड निष्पादित करें ताकि सत्यापित हो सके कि यह नया बेसलाइन चुनता है।

SQL प्लान कैसे चुना जाता है

निम्न छवि दिखाती है कि जब एक बेसलाइन प्लान मौजूद होता है तो SQL प्लान कैसे चुना जाता है।

निष्कर्ष

यदि आपको एक सिंगल क्वेरी के लिए बेसलाइन स्थानांतरित करना है तो इस पोस्ट के चरणों का उपयोग करें। आप अपग्रेड, माइग्रेशन, आदि के लिए सभी क्वेरीज़ के लिए SQL बेसलाइन भी जनरेट कर सकते हैं। सुसंगत SQL निष्पादन योजनाएँ रखने और किसी भी प्रदर्शन समस्या से बचने के लिए SQL प्लान बेसलाइन का उपयोग करें।

  1. SQL Server 2019 के हाइब्रिड बफर पूल के साथ प्रदर्शन को अधिकतम करें SQL Server 2019 के हाइब्रिड बफर पूल के साथ प्रदर्शन को अधिकतम करें

    माइक्रोसॉफ्ट® ने SQL Server® 2019 (प्रीव्यू) CTP 2.1 में एक नई सुविधा पेश की जिसे हाइब्रिड बफर पूल कहा जाता है। यह सुविधा आपको PMEM (पर्सिस्टेंट मेमोरी) डिवाइस में संग्रहीत डेटाबेस फ़ाइलों में डेटा पेजों तक सीधी पहुंच प्रदान करती है। PMEM क्या है? PMEM एक सॉलिड-स्टेट, उच्च-प्रदर्शन, बाइट-एड्रेसेबल

  1. SQL Server डेटाबेस को Amazon RDS में निर्बाध माइग्रेशन: एक चरण-दर-चरण गाइड SQL Server डेटाबेस को Amazon RDS में निर्बाध माइग्रेशन: एक चरण-दर-चरण गाइड

    यह ब्लॉग बताता है कि Microsoft® SQL Server® डेटाबेस को ऑन-प्रिमाइसेस (या Amazon® EC2 या Azure® पर होस्ट किया गया) से Amazon Relational Database Service (RDS) में कैसे ले जाया जाए। इस कदम के लिए आपके SQL डेटाबेस का बैकअप AWS S3 बकेट में लेना और उस S3 बकेट से अपने AWS RDS इंस्टेंस पर डेटाबेस को पुनर्स

  1. Oracle SQL प्रोफाइल और बेसलाइन में महारत: क्वेरी प्रदर्शन बढ़ाएं Oracle SQL प्रोफाइल और बेसलाइन में महारत: क्वेरी प्रदर्शन बढ़ाएं

    यह पोस्ट Oracle® में SQL प्रोफाइल और बेसलाइन के बीच अंतर पर प्रकाश डालती है और बताती है कि क्वेरी ट्यून करते समय यह कैसे काम करता है। ऑप्टिमाइज़र, प्रोफाइल, और बेसलाइन उच्च स्तर पर, ये तीन तत्व निम्नानुसार एक साथ काम करते हैं: क्वेरी ऑप्टिमाइज़र सिस्टम आँकड़े, बाइंड वेरिएबल्स, और कंपाइलेशन जैसी जा