क्वेरी प्रोसेसिंग और ऑप्टिमाइजेशन
क्वेरी प्रोसेसिंग और ऑप्टिमाइजेशन डेटाबेस सिस्टम का वह हिस्सा है जो एक डिक्लेरेटिव क्वेरी को एक कुशल निष्पादन योजना में बदलता है, बड़े डेटा सेट पर लागत को कम करने के लिए भौतिक ऑपरेटरों और एक्सेस पाथ का चयन करता है।
Definition
क्वेरी प्रोसेसिंग उन गतिविधियों का समूह है जिनके द्वारा एक डेटाबेस सिस्टम एक क्वेरी को पार्स करता है, ऑप्टिमाइज़ करता है और निष्पादित करता है; क्वेरी ऑप्टिमाइजेशन कई योजनाओं में से कम अनुमानित लागत वाली निष्पादन योजना की खोज है जो क्वेरी के तार्किक रूप से समतुल्य हैं।
Scope
यह क्षेत्र एक पार्स की गई क्वेरी से परिणामों तक की पाइपलाइन को कवर करता है: SQL का रिलेशनल-अलजेब्रा एक्सप्रेशंस में अनुवाद, प्रत्येक बीजगणितीय ऑपरेशन (स्कैन, जॉइन, सॉर्टिंग, एग्रीगेशन) को लागू करने वाले भौतिक ऑपरेटर, डेटा तक तेज़ पाथ प्रदान करने वाले इंडेक्स और एक्सेस मेथड्स, और लागत-आधारित ऑप्टिमाइज़र जो समतुल्य योजनाओं में से चुनने के लिए सांख्यिकी का उपयोग करता है। इसमें ट्रांजेक्शन और कॉन्करेंसी कंट्रोल तथा स्कीमा का डिज़ाइन शामिल नहीं है; यह इस बात पर केंद्रित है कि एक एकल क्वेरी का कुशलतापूर्वक मूल्यांकन कैसे किया जाता है।
Sub-topics
Core questions
- एक डिक्लेरेटिव क्वेरी को भौतिक ऑपरेटरों के ट्री में कैसे अनुवादित किया जाता है?
- कौन से भौतिक एल्गोरिदम चयन, जॉइन, सॉर्टिंग और एग्रीगेशन को लागू करते हैं?
- इंडेक्स और एक्सेस मेथड्स डेटा पुनर्प्राप्ति को कैसे तेज़ करते हैं?
- एक लागत-आधारित ऑप्टिमाइज़र योजना की लागत का अनुमान कैसे लगाता है और योजनाओं में से कैसे चुनता है?
- तार्किक रूप से समतुल्य क्वेरीज़ निष्पादन लागत में बहुत भिन्न क्यों हो सकती हैं?
Key concepts
- भौतिक क्वेरी योजना
- रिलेशनल-अलजेब्रा समतुल्यताएँ
- जॉइन एल्गोरिदम
- सॉर्टिंग और एक्सटर्नल मर्ज सॉर्ट
- इंडेक्स और एक्सेस मेथड्स
- चयनात्मकता और कार्डिनैलिटी अनुमान
- लागत मॉडल
- जॉइन-ऑर्डर गणना
- पाइपलाइनिंग और मैटेरियलाइजेशन
Key theories
- लॉजिकल-टू-फिजिकल प्लान जनरेशन
- एक क्वेरी को पहले रिलेशनल-अलजेब्रा समतुल्यताओं का उपयोग करके उम्मीदवार लॉजिकल प्लान्स में फिर से लिखा जाता है, फिर प्रत्येक बीजगणितीय ऑपरेटर को एक भौतिक एल्गोरिदम में मैप किया जाता है, जिससे निष्पादन योग्य योजनाएं बनती हैं जिनकी लागत की तुलना की जा सकती है।
- लागत-आधारित ऑप्टिमाइजेशन
- ऑप्टिमाइज़र वैकल्पिक योजनाओं — विशेष रूप से जॉइन ऑर्डर और एक्सेस पाथ — की लागत का अनुमान लगाने के लिए तालिका के आकार और मूल्य वितरण पर सांख्यिकी का उपयोग करता है, और सबसे सस्ती का चयन करता है, यह दृष्टिकोण सिस्टम आर के ऑप्टिमाइज़र द्वारा अग्रणी था।
- एक्सेस-पाथ चयन
- प्रत्येक ऑपरेशन के लिए एक तालिका को स्कैन करना, एक इंडेक्स का उपयोग करना, या क्लस्टरिंग का लाभ उठाना चुनना प्रदर्शन के लिए केंद्रीय है; ऑप्टिमाइज़र सबसे अच्छे एक्सेस पाथ को चुनने के लिए चयनात्मकता अनुमानों और I/O लागत का मूल्यांकन करता है।
Clinical relevance
क्वेरी ऑप्टिमाइजेशन ही है जो रिलेशनल डेटाबेस को बड़े पैमाने पर उपयोग करने योग्य बनाता है: एक ही SQL क्वेरी चुनी गई योजना के आधार पर मिलीसेकंड या घंटों में चल सकती है, इसलिए ऑप्टिमाइज़र की गुणवत्ता सीधे व्यावसायिक विश्लेषण, ट्रांजेक्शन प्रोसेसिंग और डेटा-गहन अनुप्रयोगों के प्रदर्शन को निर्धारित करती है।
History
आईबीएम के सिस्टम आर (सेलिंगर एट अल., 1979) के लागत-आधारित ऑप्टिमाइज़र ने प्रमुख दृष्टिकोण स्थापित किया: योजनाओं की गणना करें, सांख्यिकी से लागत का अनुमान लगाएं, और जॉइन ऑर्डरिंग के लिए डायनेमिक प्रोग्रामिंग का उपयोग करें। दशकों के शोधन ने बेहतर कार्डिनैलिटी अनुमान, नए ऑपरेटर और अनुकूली तकनीकें जोड़ीं, लेकिन मूल ढांचा आधुनिक क्वेरी ऑप्टिमाइज़र की नींव बना हुआ है।
Debates
- कार्डिनैलिटी अनुमान की विश्वसनीयता
- लागत-आधारित ऑप्टिमाइज़र मध्यवर्ती परिणाम आकारों के अनुमानों पर निर्भर करते हैं, जो सहसंबद्ध या तिरछे डेटा के लिए बहुत गलत हो सकते हैं; शोधकर्ता इस बात पर बहस करते हैं कि बेहतर सांख्यिकी और सीखे हुए अनुमानकों में कितना निवेश किया जाए बनाम अनुकूली, रनटाइम री-ऑप्टिमाइजेशन।
Key figures
- Patricia Selinger
- Jeffrey D. Ullman
- Michael Stonebraker
Related topics
Seminal works
- selinger1979
- garciamolina2008
- silberschatz2019
Frequently asked questions
- एक ही क्वेरी एक सिस्टम पर तेज़ और दूसरे पर धीमी क्यों चलती है?
- प्रदर्शन ऑप्टिमाइज़र द्वारा चुनी गई निष्पादन योजना पर निर्भर करता है, जो बदले में उपलब्ध इंडेक्स, डेटा के बारे में सांख्यिकी और लागत मॉडल पर निर्भर करता है। विभिन्न सिस्टम, या बासी सांख्यिकी वाले एक ही सिस्टम, बहुत अलग योजनाएं चुन सकते हैं — उदाहरण के लिए एक अलग जॉइन ऑर्डर या एक इंडेक्स स्कैन बनाम एक पूर्ण तालिका स्कैन।
- क्वेरी ऑप्टिमाइजेशन का सबसे कठिन हिस्सा क्या है?
- मध्यवर्ती परिणामों के आकार का सटीक अनुमान लगाना (कार्डिनैलिटी अनुमान)। जॉइन में त्रुटियां बढ़ती जाती हैं, इसलिए योजना की शुरुआत में एक छोटी सी गलत अनुमान ऑप्टिमाइज़र को नाटकीय रूप से खराब जॉइन ऑर्डर या एक्सेस पाथ चुनने के लिए प्रेरित कर सकता है। यही कारण है कि कार्डिनैलिटी अनुमान एक सक्रिय शोध समस्या बनी हुई है।