मैं क्वेरी लागत कैसे पढ़ सकता हूं, और क्या यह हमेशा एक प्रतिशत है?


34

मैं वर्तमान में SQL 70-433 (Microsoft प्रमाणन परीक्षा) के लिए अध्ययन कर रहा हूं, और मैं "क्वेरी कॉस्ट" प्रदर्शन मीट्रिक के बारे में बहुत भ्रमित हो रहा हूं।

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

लेकिन फिर मैंने सोचा, ठीक है, हो सकता है कि आपको जो करने की उम्मीद हो, दो वैकल्पिक प्रश्नों को एक साथ रखें, उन्हें "एक बैच" के रूप में चलाएं, और फिर जो भी 50% से कम लागत वाला है वह विजेता है।

लेकिन अध्याय 6 में क्वेरी लागत की चर्चा, Microsoft के SQL 70-433 प्रशिक्षण किट में से एक को इस से कोई संबंध नहीं लगता है।

यहाँ एक उदाहरण है: वे दो सहसंबद्ध उप-प्रश्नों वाली एक क्वेरी दिखाते हैं, और फिर उप-प्रश्नों को एक OPL APPLY से बदलकर उसमें सुधार करते हैं। परिणाम: "इस क्वेरी की लागत लगभग 76 है, जबकि पहली क्वेरी की लागत दोगुनी थी, जो लगभग 151 थी।" फिर वे क्वेरी को और भी बेहतर बनाते हैं, और लागत को 76 से घटाकर 3.6 कर देते हैं। वे नहीं लगाते हैं कि ये आंकड़े प्रतिशत हैं, जबकि वे इसका मतलब यह है कि वे निरपेक्ष आंकड़े हैं जो किसी अन्य प्रश्नों के संदर्भ के बिना एक स्टैंडअलोन ऑब्जेक्ट के रूप में क्वेरी से संबंधित हैं। और वैसे भी, पहली क्वेरी में 151% की लागत कैसे हो सकती है?

बाद में अध्याय में, वे एक निष्पादन योजना का स्क्रीनशॉट दिखाते हैं जिसमें तीन भाग होते हैं। पहला "कॉस्ट: 0%" कहता है, दूसरा "कॉस्ट: 1%" कहता है और अंतिम "कॉस्ट: 99%" कहता है, लेकिन स्क्रीनशॉट के नीचे का टेक्स्ट (पुस्तक का) "इस क्वेरी की लागत 0.56 है" । मैं अनुमान लगा रहा हूं कि उनका मतलब किसी और तरह की लागत से है, लेकिन मुझे इसका संदर्भ कहीं और नहीं मिल रहा है।

क्या कोई मदद कर सकता है? मैं पूरी तरह से भ्रमित हूँ।


पीएस मानकर कि वे निष्पादन योजनाओं में दिखाए गए प्रतिशत के अलावा किसी और चीज का जिक्र कर रहे हैं ... मैं एसएसएमएस कैसे प्राप्त कर सकता हूं जो वे आंकड़े बता रहे हैं? क्या मुझे SET STATISTICS TIME ON जैसा कुछ चाहिए, लेकिन कुछ अन्य कमांड के साथ जो मुझे संदेश टैब पर "लागत" का आंकड़ा दिखाएगा?

जवाबों:


43

निष्पादन लागत में "अनुमानित सबट्री कॉस्ट" के रूप में क्वेरी लागत की सूचना दी जाती है। यह एक पूर्ण आकृति है जैसे कि 1.5। कॉनर कनिंघम ने SQLBits प्रस्तुति में उल्लेख किया है कि यह मूल रूप से SQL Server 7 दिनों में किसी विशेष Microsoft कर्मचारी की मशीन ( "निक की मशीन" ) पर अमल करने के लिए लिए गए सेकंड की संख्या को संदर्भित करता है।

यहाँ छवि विवरण दर्ज करें

लेकिन अब समग्र लागत की एक इकाई रहित माप के रूप में व्याख्या की जानी चाहिए।

निष्पादन योजना एक पेड़ है। पेड़ में प्रत्येक पुनरावृत्त को एक अनुमानित सीपीयू लागत और एक अनुमानित आईओ लागत दी जाती है और इन्हें समग्र लागत प्राप्त करने के लिए एक साथ जोड़ा जाता है (सापेक्ष भार को अनियोजित डीबीसीसी कमांड के एक जोड़े के साथ समायोजित किया जा सकता है )। अनुमानित सबट्री कॉस्ट में इटरेटर की लागत और उसके सभी वंश शामिल हैं। उपयोग किए जाने वाले लागत सूत्रों का एक उदाहरण देखने के लिए आप इस लेख को देख सकते हैं ।

SSMS में संपूर्ण क्वेरी के लिए अनुमानित लागत निर्धारित करने के लिए SELECT, आलेखीय योजना के बाईं ओर रूट इट्रेटर (उदाहरण के लिए ) का चयन करें और SSMS गुण विंडो में इस मीट्रिक को देखें।

जब कई क्वेरी चल रही हों (उसी बैच में हो या नहीं) इन सभी मूल्यों को जोड़कर प्रतिशत की गणना की जाती है और प्रतिशत की गणना करें जैसा कि आप उम्मीद करेंगे।

आपको पता होना चाहिए कि वास्तविक निष्पादन योजनाओं में भी यह लागत अनुमान अनुमानों पर आधारित है और इसका उपयोग दो अलग-अलग प्रश्नों के सापेक्ष गुणों की तुलना करने के लिए किया जा सकता है, ऐसे मामलों में गलत अनुमान लगाया जा सकता है जहां अनुमान गलत हैं।


थैंक्यू, यह वास्तव में मददगार है। और बिल्कुल भी नहीं! मुझे आश्चर्य है कि उस आकृति को अधिक स्पष्ट रूप से क्यों नहीं ध्वजांकित किया गया है?

4
मैं हमेशा माप की इकाई के बारे में सोचता था, आखिरकार पता चला। मैं इसे लोगों को (कॉमिकली) समझा रहा हूं कि यह "एसक्यूएल डॉलर" है। यदि एक क्वेरी लागत 1.0 है, तो यह एक कप कॉफी के लिए 1 डॉलर का भुगतान करने जैसा है। बुरी कीमत नहीं। क्या आप एक कप के लिए $ 300 का भुगतान करेंगे? बिल्कुल नहीं!
डेटागोड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.