सेट सांख्यिकी IO- worktable / workfile


21

मैं एक्जीक्यूट क्वेरी हूं, जो प्लान तैयार करता है: यहाँ छवि विवरण दर्ज करें

सांख्यिकी IO:

Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Table1'. Scan count 9, logical reads 90450, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

तो, कुछ सवाल

1. क्यों सांख्यिकी IO Profiler की तुलना में अधिक पढ़ता है?

के रूप में KB314648 यह ठीक है अगर अगर प्रोफाइलर सांख्यिकी आईओ की तुलना में अधिक संख्या की रिपोर्ट। लेकिन Profiler शो 92283वर्णित क्वेरी पर पढ़ता है, वही निष्पादन। इसका मतलब यह है कि Profiler workfile / worktable पढ़ता गिनती नहीं है?

2. "वर्कटेबल" और "वर्कफाइल" में क्या अंतर है

मैंने पाया है कि:

  • हैश जॉन्स और हैश एग्रीगेट्स के लिए अस्थायी परिणाम संग्रहीत करने के लिए कार्य फ़ाइलों का उपयोग किया जा सकता है।
  • कार्य तालिका का उपयोग क्वेरी स्पूल, लोब वेरिएबल्स, एक्सएमएल वेरिएबल्स और कर्सर्स के लिए अस्थायी परिणाम स्टोर करने के लिए किया जा सकता है।

क्या उनके बीच कुछ शारीरिक अंतर है?

3. इस विशेष मामले में "वर्कटेबल" क्यों है?

अगर मेरे पास 0 तार्किक रीड है, तो मेरे पास काम करने योग्य क्यों है? इसके आँकड़े IO में सिर्फ इसलिए शामिल हैं क्योंकि इसके लिए आवश्यकता हो सकती है (खराब अनुमान के मामले में)?

विवरण तकनीकी पर पाया अस्पष्ट लगता है ..

4. Workfile पर "भौतिक पाठ" क्या है?

क्या इसका मतलब यह है कि क्वेरी के लिए पर्याप्त मेमोरी नहीं दी गई थी, इसलिए डेटा को डिस्क पर लिखा जाना चाहिए था, जबकि क्वेरी निष्पादित (एचटीएल मैच पर पीला चेतावनी)? क्या मैं यह मान सकता हूं कि जब भी मैं शारीरिक पढ़ने के साथ सांख्यिकी IO में काम करने योग्य / वर्कफ़ाइल देखता हूं, तो क्वेरी के लिए पर्याप्त मेमोरी नहीं दी गई है और क्वेरी के कुछ मध्यवर्ती परिणामों को tempdb डिस्क पर लिखा जाना था? और जब भी मैं केवल तार्किक रीड्स देखता हूं, RAM का उपयोग किया जाता है?

5. वन "वर्कफ़ाइल" का अर्थ ठीक एक तालिका है जिसका उपयोग एक उद्देश्य के लिए किया जाता है?

अगर वहाँ अधिक है कि एक workfile / worktable तो मैं नहीं जानता कि यह किस ऑपरेशन के लिए प्रयोग किया जाता है?


हैश मैच पर चेतावनी क्या है? क्या यह एक टेम्पर्ड स्पिल है?
टॉम वी - टीम मोनिका

@ टोम वी, यस- स्पिल लेवल 1 और स्पिल लेवल 2.
जानिस

जवाबों:


15

1. क्यों सांख्यिकी IO Profiler की तुलना में अधिक पढ़ता है?

कोई विचार नहीं, क्षमा करें। अक्सर मतभेद होते हैं क्योंकि वे अलग-अलग चीजों को माप रहे हैं जैसा कि ज्ञानकोष लेख में बताया गया है। इस पर कोई अतिरिक्त दस्तावेज नहीं है जिससे मैं अवगत हूं। आप विस्तृत परीक्षण के माध्यम से कुछ चीजों का अनुमान लगाने में सक्षम हो सकते हैं, लेकिन वास्तव में कोई भी गारंटी नहीं है कि जो कुछ भी आप पाते हैं वह संस्करणों और बिल्ड में लगातार बना रहेगा। संभावित कीड़े के लिए लेखांकन से पहले इच्छित व्यवहार असंगत है ।

2. "वर्कटेबल" और "वर्कफाइल" में क्या अंतर है

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

3. इस विशेष मामले में "वर्कटेबल" क्यों है?

एक कार्य पंक्ति हमेशा एक (पंक्ति मोड) हैशिंग ऑपरेशन के लिए आवश्यक होती है। इसका उपयोग इनपुट को हैश विभाजन (एक अतिभारित शब्द, तालिका विभाजन से संबंधित नहीं) और स्थिति पर नज़र रखने के लिए इनपुट वितरित करने में किया जाता है। मैंने कभी भी हैशिंग वर्क टेबल रिपोर्ट को आंकड़ों के उत्पादन में शून्य के अलावा और कुछ नहीं देखा है, लेकिन फिर मैंने वास्तव में कभी इस पर ध्यान नहीं दिया।

4. Workfile पर "भौतिक पाठ" क्या है?

जब हैश विभाजन फैलता है तो कार्य फ़ाइलें नियोजित तंत्र का हिस्सा होती हैं। यद्यपि प्रलेखित नहीं किया गया है, जब निष्पादन इंजन काम की फाइलों से स्पिल्ट हैश विभाजन को पुनः प्राप्त करता है, तो भौतिक और आगे-आगे पढ़ता है।

5. वन "वर्कफ़ाइल" का अर्थ ठीक एक तालिका है जिसका उपयोग एक उद्देश्य के लिए किया जाता है?

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

अंततः, काम की फाइलों और वर्क टेबल के लिए आउटपुट से सीखा जाने वाला इतना उपयोगी नहीं STATISTICS IOहै, जिसे आप एक पोस्ट-एक्ज़ीक्यूशन प्लान (या DMVs, एक्सटेंडेड इवेंट्स आदि) के माध्यम से अन्य जानकारी को देखकर सीख सकते हैं। मैं अधूरे उत्तर के लिए माफी माँगता हूँ, लेकिन यह सबसे अच्छा है जो मैं अपने सिर के ऊपर से चढ़ा सकता हूँ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.