डेटाबेस आँकड़े क्या हैं, और मैं उनसे कैसे लाभ उठा सकता हूँ?


18

मैंने उन आंकड़ों का उल्लेख सुना है जो SQL सर्वर डिफ़ॉल्ट रूप से रखता है। वे क्या ट्रैक कर रहे हैं, और मैं अपने डेटाबेस को बेहतर बनाने के लिए इस जानकारी का उपयोग कैसे कर सकता हूं?

जवाबों:


21

सांख्यिकी बस गतिशील मेटाडाटा का एक रूप है जो बेहतर निर्णय लेने में क्वेरी ऑप्टिमाइज़र की सहायता करता है। उदाहरण के लिए, यदि किसी तालिका में केवल एक दर्जन पंक्तियाँ हैं, तो लुकअप करने के लिए इंडेक्स में जाने का कोई मतलब नहीं है; आप हमेशा एक पूर्ण टेबल स्कैन करने से बेहतर होंगे। लेकिन अगर वही तालिका एक लाख पंक्तियों में बढ़ती है, तो आप संभवतः सूचकांक का उपयोग करना बेहतर होगा। लेकिन अगर आप उस तालिका को उस स्तंभ पर क्वेरी करते हैं, जिसमें केवल कुछ विशिष्ट मान हैं (जैसे कि यह "एम" या "एफ" युक्त "सेक्स" स्तंभ हो सकता है), तो वास्तव में एक एफटीएस बेहतर हो सकता है क्योंकि वह मामला है क्योंकि आप परिणाम सेट बनाने के लिए वैसे भी ब्लॉक को पुनः प्राप्त करने की आवश्यकता है। अब कहते हैं कि आपकी तालिका 99% "एम" है और केवल 1% "एफ" है, हमें एक मामले में एफटीएस या दूसरे में एक सूचकांक का उपयोग करना चाहिए। समान तालिका, समान क्वेरी, तालिका की सामग्री के आधार पर संभावित रूप से चार अलग-अलग क्वेरी योजनाएं। इस प्रकार की चीजें "आंकड़े" हैं और वे प्रत्येक डेटाबेस के लिए व्यक्तिगत हैं - यहां तक ​​कि समान तालिका और सूचकांक संरचना वाले दो डेटाबेस में अलग-अलग आंकड़े होंगे।

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


2
+1 मैंने इसे और बेहतर नहीं बताया। यह याद रखना महत्वपूर्ण है कि आँकड़े केवल सहायक होते हैं यदि उन्हें अद्यतित रखा जाए। यह स्वचालित अद्यतन आँकड़ों या नियमित रूप से निर्धारित (रात्रि / साप्ताहिक) अद्यतन आँकड़ों के कमांड के साथ किया जा सकता है। इसके अलावा, इंडेक्स रीबर्ड्स स्वचालित रूप से एक आँकड़े अपडेट करेगा।
मैट एम

5

इंडेक्स और / या कॉलम में मान के वितरण को ट्रैक करने के लिए उनका उपयोग क्वेरी ऑप्टिमाइज़र (MSDN पर श्वेतपत्र) द्वारा किया जाता है

आपकी एकमात्र चिंता नियमित रूप से अपडेट होने की होनी चाहिए : बस अपना सामान करने के लिए डीबी इंजन को छोड़ दें


2
हर बार नहीं। ऐसे समय होते हैं जब मैन्युअल रूप से एक आँकड़ा बनाते हैं, क्वेरी प्रदर्शन में मदद कर सकते हैं।
मन्दिनी २३'११

@ मर्डनी: आपने असल जिंदगी में ऐसा कितनी बार किया है? बहुत मुश्किल से। मैंने IIRC नहीं किया है। यदि उसे सांख्यिकी की आवश्यकता है तो तर्क दे सकता है कि उसे एक सूचकांक की आवश्यकता है, जिसके आँकड़े वैसे भी हैं। आप केवल कॉलम के आंकड़े बना सकते हैं के अनुसार बनाएं सांख्यिकी । ओपी को आंकड़ों के बारे में पूछना था कि मैं यह कहना चाहता हूं कि यह एक उचित बात है।
gbn

1
मैंने इसे कई बार किया है, लेकिन अक्सर नहीं। मैं आपके "आपकी एकमात्र चिंता नियमित रूप से अपडेट करने के लिए होनी चाहिए" कथन के खिलाफ जा रही थी, क्योंकि अद्यतन आँकड़े केवल एक चीज नहीं है।
मन्दिनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.