क्वेरी प्रोफाइलिंग यह है कि आप कैसे पता लगाते हैं कि SQL सर्वर प्रदर्शन के ब्लैक बॉक्स के अंदर क्या चल रहा है।
उपयोगकर्ताओं के लिए यह आसान है। डीबीए नहीं करते हैं।
उन आसान विकल्पों के बारे में सोचें जो उपयोगकर्ताओं के पास तब होते हैं जब कोई डेटाबेस एप्लिकेशन खराब चल रहा हो:
- जाओ कॉफी ले आओ और प्रतीक्षा करो।
- कंप्यूटर का अपमान करें।
- साथी उपयोगकर्ताओं से शिकायत करें।
- मुसीबत टिकट जमा करें।
क्या डीबीए के रूप में आपके पास मौजूद विकल्पों की तुलना में रिले का जीवन नहीं है?
- अवरुद्ध सत्रों की तलाश करें।
- बफर कैश हिट अनुपात जांचें।
- अधिकतम I/O प्रतीक्षा मापें।
- पृष्ठ जीवन प्रत्याशा की जांच करें।
- देखें कि अनुक्रमणिका अनुपलब्ध हैं या पुनर्निर्माण की आवश्यकता है।
- ताले/डेडलॉक की तलाश करें।
- सीपीयू उपयोग की जांच करें।
- स्मृति से बाहर संदेशों के लिए एप्लिकेशन लॉग की समीक्षा करें।
- सुनिश्चित करें कि tempdb डेटाबेस ठीक से कॉन्फ़िगर किया गया है।
यह उन सॉफ़्टवेयर समस्याओं में से कोई भी हो सकता है, और वे आमतौर पर आपको किसी क्वेरी को अनुकूलित करने या आपके कॉन्फ़िगरेशन को बदलने के समाधान की ओर ले जाते हैं। या यह एक हार्डवेयर समस्या हो सकती है, और इसका समाधान अधिक मेमोरी या प्रोसेसिंग पावर खरीदना है।
क्योंकि डेटाबेस एप्लिकेशन ज्यादातर SQL क्वेरीज़ को निष्पादित करने के बारे में हैं, प्रदर्शन समस्याओं में SQL सर्वर में छिपाने के लिए बहुत सारे स्थान हैं। यदि आप एक उपयोगकर्ता हैं, तो आप कह सकते हैं, "ओह, ठीक है, समस्या कहीं न कहीं उस ब्लैक बॉक्स के अंदर होनी चाहिए। मेरा काम नहीं।"
लेकिन एक डीबीए के रूप में, आपके पास वह विलासिता नहीं है। आपको ब्लैक बॉक्स खोलना है, उसमें चढ़ना है, गड़बड़ी ढूंढनी है और उसे ठीक करना है।
SQL सर्वर प्रदर्शन निगरानी के साथ क्वेरी प्रोफाइलिंग 101
सामान्य तौर पर, सर्वर प्रदर्शन निगरानी के साथ आपका लक्ष्य इस बात पर नज़र रखना है कि आपकी SQL क्वेरी समय के साथ कैसा प्रदर्शन कर रही है और आपके SQL सर्वर पर लेन-देन की मात्रा में वृद्धि हुई है। आप उस लक्ष्य को कई तरीकों से हासिल कर सकते हैं।
व्याख्या योजना पर एक नज़र डालें
व्याख्या योजना से पता चलता है कि SQL सर्वर क्वेरी को निष्पादित करने में क्या करेगा, इसमें शामिल होने वाली तालिकाएं, इसमें शामिल होने का प्रकार, यह कितनी पंक्तियों को स्पर्श करेगा और इसके द्वारा उपयोग किए जाने वाले अनुक्रमित होंगे।
व्याख्या योजना आपको क्या बता सकती है? एक बात के लिए, आप देख सकते हैं कि क्वेरी को स्वयं कैसे सुधारें, उदाहरण के लिए, एक नेस्टेड लूप जॉइन को हटाकर जो एक डेटाबेस डेवलपर्स में से एक विशाल तालिका के खिलाफ जोड़ा गया है। या, आप व्याख्या योजना से पता लगा सकते हैं कि आपको किसी निश्चित तालिका के लिए एक अनुक्रमणिका बनाने या पुनर्निर्माण करने की आवश्यकता है।
इससे पहले कि आप वास्तव में संदिग्ध प्रश्नों को निष्पादित करें, व्याख्या योजना क्वेरी प्रोफाइलिंग के लिए एक अच्छा प्रारंभिक बिंदु है।
क्वेरी निष्पादित करें
प्रश्नों को निष्पादित करने और यह देखने के लिए कि वे रनटाइम पर किन संसाधनों को प्रभावित करते हैं, आप पहले घटनाओं को चिह्नित करने के लिए निशान बनाते हैं जैसे वे होते हैं। ट्रेस के साथ, आप डेटा कैप्चर कर सकते हैं और त्रुटियों को उत्पन्न होने के लिए देख सकते हैं। एक प्रोफाइलिंग टूल उस डेटा को संग्रहीत करता है जिसे ट्रेस ने कैप्चर किया है और इसे इस तरह से प्रदर्शित करता है जिससे आपके लिए समस्याग्रस्त प्रश्नों को ढूंढना और उनका निवारण करना आसान हो जाता है।
ट्रेस और प्रोफाइलिंग टूल का संयोजन बहुत सारे सवालों के जवाब दे सकता है:
- कौन सी क्वेरी सबसे अधिक मेमोरी की खपत करती हैं?
- प्रत्येक क्वेरी को निष्पादित होने में कितना समय लगता है?
- SQL सर्वर प्रत्येक क्वेरी के लिए कौन से लॉक सेट करता है?
- बफ़र कैश से SQL सर्वर कौन-सी क्वेरी निष्पादित कर सकता है? इसे कितनी बार डिस्क पर जाने की आवश्यकता है?
- प्रत्येक क्वेरी कितनी पंक्तियों की जांच करती है?
- डेटाबेस प्रति मिनट कितने अनुरोधों को पूरा कर रहा है?
आप अपने उत्पादन डेटाबेस पर क्वेरी निष्पादित करके सबसे सटीक रीडिंग प्राप्त करेंगे, लेकिन यह आपके वास्तविक दुनिया के ग्राहकों और उपयोगकर्ताओं द्वारा प्रसंस्करण को धीमा भी कर सकता है। यदि आप कर सकते हैं, तो पहले विकास पर परीक्षण करें या उन उदाहरणों का परीक्षण करें जहां आप मेमोरी या I/O के लिए अपने उत्पादन उदाहरण के साथ प्रतिस्पर्धा नहीं कर रहे हैं।
ग्राहकों और उपयोगकर्ताओं की बात करें तो क्वेरी प्रोफाइलिंग में आपका लक्ष्य उन्हें खुश करना है। प्रोफाइलिंग आपके डेटाबेस में दर्जनों समस्याओं को आसानी से उजागर कर सकती है, लेकिन आपने ब्लैक बॉक्स खोलने का कारण सबसे दर्दनाक मुद्दों को हल करना है। एक या दो दिन के सामान्य उपयोग से डेटा कैप्चर करने के बाद, आप SQL सर्वर प्रदर्शन समस्याओं का पता लगा सकते हैं जो आपके उपयोगकर्ताओं को सबसे अधिक परेशानी देती हैं। हो सकता है कि एक अनुपलब्ध अनुक्रमणिका रिकॉर्ड पुनर्प्राप्ति को धीमा कर रही हो, या बहुत से अनुक्रमणिकाएँ रिकॉर्ड प्रविष्टि और डेटाबेस अद्यतनों को धीमा कर रही हों। हो सकता है कि अक्सर इस्तेमाल की जाने वाली क्वेरी ऐसी जानकारी इकट्ठा कर रही हो जिसकी अब किसी को परवाह नहीं है।
प्रोफाइलिंग टूल का बुद्धिमानी से उपयोग करें
प्रोफाइलिंग टूल आपको प्रत्येक ईवेंट, फ़िल्टर और प्रक्रिया कॉल को मैन्युअल रूप से सेट करने की कठिन प्रक्रिया से बचाता है जिसे आप ट्रेस करना चाहते हैं। SQL सर्वर प्रदर्शन के ब्लैक बॉक्स के अंदर बहुत कुछ चल रहा है, आप पेड़ों के लिए जंगल देखने के लिए बहुत अधिक डेटा आसानी से प्राप्त कर सकते हैं।
अच्छे टूल आपको सावधानीपूर्वक चयन करने में सक्षम बनाते हैं कि आप क्या ट्रेस करते हैं, उदाहरण के लिए, आप सैकड़ों Lock:Acquired ईवेंट कैप्चर नहीं कर रहे हैं और अनावश्यक रूप से उनके साथ अपना डिस्प्ले नहीं भर रहे हैं। हालांकि, यदि आपको बार-बार होने वाली घटना की जांच करने की आवश्यकता है, तो एप्लिकेशन नाम या तालिका नाम जैसे फ़िल्टर का उपयोग करें।
डेटाबेस में किसी तालिका में ट्रेस डेटा लिखने के बजाय, इसे अपनी अलग फ़ाइल में सहेजने पर विचार करें। यह ट्रेस के ऊपरी हिस्से को SQL सर्वर पर बोझ बनने से रोकता है और संभावित रूप से तिरछा परिणाम देता है। यदि आपका प्रोफाइलिंग टूल किसी तालिका से निकाले गए डेटा का समर्थन करता है, तो आप बाद में फ़ाइल से डेटा को तालिका में आयात कर सकते हैं।
क्वेरी प्रोफाइलिंग के साथ अपने SQL सर्वर प्रदर्शन निगरानी में सुधार करें
आपके उपयोगकर्ता SQL सर्वर प्रदर्शन के ब्लैक बॉक्स से दूर रहते हैं, लेकिन आपको ऐसा नहीं करना है। क्वेरी प्रोफाइलिंग यह है कि आप बॉक्स को कैसे खोलते हैं, यह पता लगाते हैं कि अंदर क्या चल रहा है और समस्या निवारण शुरू करें।
लेकिन तब तक प्रतीक्षा न करें जब तक आपको इसका उपयोग करने में परेशानी न हो। क्वेरी प्रोफाइलिंग इंजन को बदलने की तुलना में तेल की जांच करने जैसा है। यह अप्रचलित प्रश्नों को अपडेट करने और डिजाइन को संशोधित करने के सामान्य डीबीए कर्तव्यों में मदद करता है ताकि आपके डेटाबेस व्यवसाय में बदलाव के साथ तालमेल बिठा सकें।