मैं Oracle 11.2.0.4 से 12.1.0.2 तक, नए अपग्रेड किए गए डेटाबेस में कुछ SQL स्टेटमेंट को ट्यून करने पर काम कर रहा हूं। जैसा कि मैं आमतौर पर करता हूं, मैं व्याख्या योजना देखने के लिए SQL डेवलपर का उपयोग करना पसंद करता हूं। एक्सप्लेन प्लान आउटपुट में कुछ ग्रे टेक्स्ट देखकर मुझे आश्चर्य हुआ, जिसे आप नीचे देख सकते हैं।
मेरी पहली प्रतिक्रिया अजीब थी और आश्चर्य हुआ कि ओरेकल के पास हैश जॉइन और नेस्टेड लूप दोनों दो टेबल में शामिल होने के लिए क्यों शामिल हैं। बाद में योजना में, मुझे उसी तालिका का एक इंडेक्स (फास्ट फुल स्कैन) दिखाई देता है जिसमें इंडेक्स (रेंज स्कैन) होता है। एक ही टेबल के दो एक्सेस क्यों? Oracle 12c क्या कर रहा है?
यह सब नए 12c ऑप्टिमाइज़र के अनुकूली क्वेरी ऑप्टिमाइज़ेशन का हिस्सा है। इस SQL कथन के लिए, ऑप्टिमाइज़र ने नेस्टेड लूप्स जॉइन को शामिल करते हुए एक प्रारंभिक योजना का उपयोग करने का निर्णय लिया है। नेस्टेड लूप्स में शामिल होने वाली योजना के लिए, ओरेकल इंडेक्स रेंज स्कैन के साथ तालिका तक पहुंच जाएगा। ऑप्टिमाइज़र ने यह भी निर्णय लिया है कि हैश जॉइन में इंडेक्स फास्ट फुल स्कैन विचार करने के लिए एक और निष्पादन योजना हो सकती है। SQL कथन का निष्पादन शुरू होने से पहले, ऑप्टिमाइज़र की दो योजनाएँ होती हैं। एक योजना है डिफ़ॉल्ट योजना और दूसरी योजना है अनुकूली योजना। ओरेकल एसक्यूएल स्टेटमेंट के निष्पादन को देखेगा क्योंकि यह डिफ़ॉल्ट योजना के साथ निष्पादित करना शुरू कर देता है। यदि Oracle यह निर्धारित करता है कि यह गलत निष्पादन योजना है, तो वह अनुकूली योजना पर स्विच कर सकता है।
अनुकूली योजनाओं के बारे में अधिक जानकारी के लिए, Oracle का यह श्वेत पत्र देखें। पृष्ठ 3-5 कार्रवाई में अनुकूली जुड़ाव योजनाओं का वर्णन करते हैं।
उपरोक्त व्याख्या योजना में ग्रे टेक्स्ट केवल अनुकूली योजना है। SQL डेवलपर 4.1 डिफ़ॉल्ट योजना और अनुकूली योजना दोनों को दिखाता है।
स्पष्टीकरण योजना में और नीचे अन्य एक्सएमएल अनुभाग है, जिसे नीचे देखा जा सकता है। हम देख सकते हैं कि मेरा डीबी संस्करण 12.1.0.2 है। हम जानकारी का प्रकार भी दिखा सकते हैं कि यह एक अनुकूली योजना है।
"पंक्तियों" शीर्षक वाले अनुभाग पर ध्यान दें। हम व्याख्या योजना की प्रत्येक पंक्ति को देख सकते हैं। वे पंक्तियाँ जहाँ "skp=0" डिफ़ॉल्ट योजना का हिस्सा हैं। जिन पंक्तियों में “skp=1” अनुकूली योजना है, जिन्हें अब हम जानते हैं, वे SQL Developers में ग्रे टेक्स्ट के रूप में दिखाई देती हैं।