बस यहां अनुमान लगा रहा है, लेकिन एक चीज जिसे मैं कल्पना करता हूं डेटाबेस क्वेरी अनुकूलन है।
एसक्यूएल जैसी घोषणात्मक भाषा में एक डेटाबेस क्वेरी को "निष्पादन योजना" नामक एक चरण-दर-चरण कार्यक्रम में अनुवादित किया जाना है। एक एसक्यूएल क्वेरी को आम तौर पर ऐसी कई निष्पादन योजनाओं में अनुवादित किया जा सकता है, जो सभी एक ही परिणाम देते हैं लेकिन बहुत अलग प्रदर्शन हो सकते हैं। क्वेरी ऑप्टिमाइज़र को सबसे तेज़, या कम से कम एक खोजना है जो उचित रूप से तेज़ है।
लागत आधारित क्वेरी अनुकूलक एक "लागत समारोह" है, जो वे एक दिया योजना के क्रियान्वयन के समय का अनुमान करने के लिए उपयोग कर सकते है। संपूर्ण अनुकूलक सभी संभावित योजनाओं ("सभी संभव" के कुछ मूल्य के लिए) के माध्यम से जाते हैं और सबसे तेज़ चयन करते हैं। जटिल प्रश्नों के लिए संभव योजनाओं की संख्या निषेधात्मक बड़ा हो सकता है, बहुत ज्यादा लंबे अनुकूलन बार के लिए अग्रणी (इससे पहले कि आप भी डेटाबेस में खोज शुरू!) तो वहाँ भी कर रहे हैं गैर संपूर्ण अनुकूलक। वे केवल कुछ योजनाओं को देखते हैं, शायद चुनने में यादृच्छिक तत्व के साथ। यह काम करता है के बाद से वहाँ आमतौर पर "अच्छा" की योजना की एक बड़ी संख्या है, और यह महत्वपूर्ण है कि पूरी तरह से सबसे अच्छा एक खोजने के लिए नहीं हो सकता है - यह शायद इष्टतम 2-दूसरी योजना के बजाय एक 5 दूसरी योजना का चयन करने के लिए बेहतर है , अगर इसे 2-सेकंड की योजना खोजने के लिए ऑप्टिमाइज़ेशन के कई मिनट की आवश्यकता है।
कुछ अनुकूलन एल्गोरिदम "वादा" (आंशिक) योजनाओं की एक क्रमबद्ध कतार का उपयोग करते हैं। यदि आपको वास्तव में कोई फर्क नहीं पड़ता कि आपको बिल्कुल सही योजना मिलती है, तो हो सकता है कि आप लगभग-क्रमबद्ध कतार का उपयोग कर सकें?
एक और विचार (और मैं अभी भी अनुमान लगा रहा हूं) एक समय-साझाकरण प्रणाली में प्रक्रियाओं या धागे के लिए एक शेड्यूलर है, जहां यह महत्वपूर्ण नहीं हो सकता है कि अगर कोई निश्चित प्रक्रिया या धागा इसके बाद कुछ मिलीसेकंड प्राप्त करता है सख्ती से प्राथमिकता से क्रमबद्ध।
स्रोत
2008-09-29 03:11:30
अच्छा! अगर मैं कर सकता तो मैं आपको दो बार वोट दूंगा। :-) –