सांख्यिकी का SQL सर्वर नमूना अद्यतन आरोही कुंजी कॉलम पर उच्चतम RANGE_HI_KEY को याद करता है


10

मैं यह समझने की कोशिश कर रहा हूं कि सांख्यिकी नमूने कैसे काम करते हैं और नमूना आंकड़ों के अपडेट पर नीचे अपेक्षित व्यवहार है या नहीं।

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

डेटा लोड रात भर चलता है, इसलिए शुक्रवार 8 अप्रैल को हमने 7 वें के लिए डेटा लोड किया।

प्रत्येक रन के बाद हम आंकड़े अपडेट करते हैं, हालांकि एक के बजाय एक नमूना लेते हैं FULLSCAN

हो सकता है कि मैं भोला हूँ, लेकिन मुझे उम्मीद थी कि SQL सर्वर रेंज में उच्चतम कुंजी और निम्नतम कुंजी की पहचान करेगा ताकि यह सुनिश्चित हो सके कि यह एक सटीक नमूना है। इस लेख के अनुसार :

पहली बाल्टी के लिए, निचली सीमा उस स्तंभ का सबसे छोटा मूल्य है जिस पर हिस्टोग्राम उत्पन्न होता है।

हालाँकि, इसमें अंतिम बाल्टी / सबसे बड़े मूल्य का उल्लेख नहीं है।

8 वीं की सुबह के नमूने के अद्यतन के साथ, नमूना तालिका (7 वें) में उच्चतम मूल्य से चूक गया।

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

जैसा कि हम पहले दिन के डेटा पर बहुत अधिक क्वेरी करते हैं, इसके परिणामस्वरूप त्रुटिपूर्ण कार्डिनैलिटी का अनुमान और कई प्रश्न निकलते हैं।

SQL सर्वर को उस कुंजी के लिए उच्चतम मान की पहचान नहीं करनी चाहिए और उसे अधिकतम के रूप में उपयोग करना चाहिए RANGE_HI_KEY? या क्या यह बिना उपयोग के अपडेट की सीमाओं में से एक है FULLSCAN?

संस्करण SQL सर्वर 2012 SP2-CU7। हम वर्तमान OPENQUERYमें SP3 में व्यवहार में परिवर्तन के कारण अपग्रेड नहीं कर सकते हैं जो SQL सर्वर और Oracle के बीच एक लिंक किए गए सर्वर क्वेरी में संख्याओं को कम कर रहा था।

जवाबों:


11

SQL सर्वर को उस कुंजी के लिए उच्चतम मान की पहचान नहीं करनी चाहिए और उसे अधिकतम के रूप में उपयोग करना चाहिए RANGE_HI_KEY? या क्या यह बिना उपयोग के अपडेट की सीमाओं में से एक है FULLSCAN?

यह नमूना आंकड़ों के वर्तमान कार्यान्वयन की एक सीमा है। जैसा कि यह खड़ा है, नमूना आंकड़े संग्रह का उपयोग करता है TABLESAMPLE SYSTEM, जो एक आवंटन-ऑर्डर स्कैन का उपयोग करता है और स्कैन से नमूने के पन्नों का चयन करता है। केवल चुने गए पृष्ठ हिस्टोग्राम में योगदान करते हैं।

चूंकि स्कैन आवंटन-ऑर्डर (इंडेक्स-ऑर्डर के बजाय) है, इसलिए कुंजी क्रम में पहले और अंतिम पृष्ठों को वरीयता देने का कोई तरीका नहीं है।

अधिक जानकारी के लिए इस संबंधित प्रश्न को देखें:

आँकड़ों को अद्यतन करते समय नमूना कैसे काम करता है?

और मेरा लेख, आवंटन आदेश स्कैन

वर्कअराउंड के लिए, फैबियानो अमोरिम द्वारा आरोही कॉलम पर सांख्यिकी देखें


2

त्वरित अनुमान: ट्रेस ध्वज 4139 को सक्षम करें।

आप पहले से ही SP2-CU1 चला रहे हैं इसलिए यह काम करना चाहिए

TF 2389 विज्ञापन 2390 के बारे में दिशा-निर्देशों पर भी ध्यान दें और http://sql-sasquatch.blogspot.com.mt/2013/06/mssql-plan-guides-to-address-ascending.html भी देखें

(ध्यान दें, मैंने वास्तव में इस समस्या को नहीं मारा है और उस गहरे में डुबकी नहीं लगाई है)

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