क्यूब्स को लगातार निगरानी की आवश्यकता होती है क्योंकि उनकी उत्पादकता काफी कम हो जाती है (क्वेरी निर्माण के दौरान मंदी, प्रसंस्करण समय वृद्धि)। कमी का कारण जानने के लिए हमें अपने सिस्टम पर नजर रखने की जरूरत है। इसके लिए हम SQL Server Profiler का उपयोग करते हैं। हालाँकि, Microsoft इस SQL अनुरेखण उपकरण को बाद के संस्करणों में बाहर करने की योजना बना रहा है। उपकरण का मुख्य नुकसान संसाधन तीव्रता है, और इसे उत्पादन सर्वर पर सावधानी से चलाया जाना चाहिए, क्योंकि यह एक महत्वपूर्ण सिस्टम उत्पादकता हानि का कारण बन सकता है।
इस प्रकार, एक्सटेंडेड इवेंट सर्वर सिस्टम के लिए एक सामान्य इवेंट-हैंडलिंग सिस्टम है। यह सिस्टम SQL सर्वर से डेटा के सहसंबंध का समर्थन करता है जो SQL सर्वर स्थिति ईवेंट प्राप्त करने की अनुमति देता है।
सिस्टम आर्किटेक्चर नीचे दिखाया गया है:
वास्तव में, हमारे पास एक पैकेज है जिसमें ईवेंट, लक्ष्य, क्रियाएँ, प्रकार, विधेय और मानचित्र शामिल हैं। ईवेंट, लक्ष्य, क्रिया वाले सत्र सर्वर पर चलाए जाते हैं। मैं विस्तार से वास्तुकला का वर्णन नहीं करूंगा क्योंकि सहायता में एक स्पष्ट विवरण है।
अब, अपने SSAS पर वापस लौटते हैं। सब कुछ अधिक स्पष्ट करने के लिए, आइए कई परिदृश्यों पर विचार करें जिनका उपयोग हम समस्या विश्लेषण के लिए करते हैं।
पहला परिदृश्य:घन प्रसंस्करण विश्लेषण (बहुआयामी घन)
अक्सर ऐसा होता है जब प्रोसेसिंग के दौरान क्यूब को बहुत लंबे समय तक अपडेट किया जा रहा है, हालांकि डेटा वॉल्यूम काफी कम है। कारण का पता लगाने के लिए, हमें यह समझने की जरूरत है कि कौन सी क्वेरी या प्रसंस्करण का कौन सा स्थान मंदी का कारण बनता है। बेशक, हम प्रोडक्शन पर प्रोसेसिंग चला सकते हैं और देख सकते हैं कि क्या हो रहा है, लेकिन मुझे यकीन नहीं है कि आपके उपयोगकर्ता इसकी सराहना करेंगे। यहाँ विस्तारित घटनाएँ सहायता के लिए आती हैं। आइए अपना सत्र चलाएं और इसकी बचत को एक फ़ाइल में कॉन्फ़िगर करें।
आइए SSMS खोलें और SSAS से कनेक्ट करें, और फिर प्रबंधन पर स्विच करें।
अब, एक नया सत्र बनाते हैं:
- सामान्य टैब पर, हमारे सत्र के लिए एक नाम निर्दिष्ट करें और एक टेम्पलेट लोड करें।
- द ईवेंट टैब उन घटनाओं को दिखाता है जो हमें समस्याओं का विश्लेषण करने में मदद करेंगी। इस टैब में प्रोफाइलर के हमारे सभी पुराने मित्र हैं। विश्लेषण को संसाधित करने के लिए निम्नलिखित घटनाओं का चयन करें:CommandBegin , कमांडएंड, कार्यक्रम essReportBegin और ProgressReportEnd, ResourseUsage.
कमांडबेगिन , कमांडएंड प्रसंस्करण के दौरान कमांड निष्पादन की शुरुआत और समाप्ति दिखाएगा।
कार्यक्रम essReportBegin और ProgressReportEn प्रत्येक घटना की लंबाई पर विस्तृत जानकारी प्रदान करें और डेटा पढ़ें, SQL क्वेरी का निष्पादन, लंबाई आदि दिखाएं।
संसाधन उपयोग एक क्वेरी, एक क्रिया के निष्पादन पर खर्च किए गए संसाधनों की संख्या को दर्शाता है।
जब हम ईवेंट का चयन करते हैं, तो हम प्रत्येक ईवेंट को कॉन्फ़िगर करने के लिए स्विच कर सकते हैं और निर्दिष्ट कर सकते हैं कि कौन से ईवेंट दिखाए जाने चाहिए, और कौन से ईवेंट को छिपाया जाना चाहिए (उदाहरण के लिए, हम प्रक्रिया आईडी छिपा सकते हैं)।
- डेटा संग्रहण टैब। यहां हम या तो रीयल-टाइम मोड में ईवेंट दिखाने के लिए निर्दिष्ट कर सकते हैं या उन्हें एक फ़ाइल में लिख सकते हैं:
- event_file - आगे के विश्लेषण के लिए एक फ़ाइल में ईवेंट सहेजना। अधिकतम फ़ाइल आकार और गंतव्य पथ निर्दिष्ट करें। यदि फ़ाइल का आकार निर्दिष्ट आकार से अधिक है, तो एक नई फ़ाइल बनाई जाएगी। साथ ही, हम उन फ़ाइलों की संख्या निर्दिष्ट कर सकते हैं जिन्हें बनाया जाना चाहिए (अधिकतम संख्या फ़ाइलें)।
- event_stream - रीयल-टाइम मोड में ईवेंट देखने में सक्षम बनाता है।
- ring_buffer - निर्दिष्ट करता है कि जब तक सर्वर चलता है, सत्र डेटा को मेमोरी में संग्रहीत किया जाना चाहिए। पुनः लोड होने की स्थिति में, डेटा हटा दिया जाएगा।
- द उन्नत टैब किसी दिए गए सत्र के लिए संसाधनों (मेमोरी, प्रोसेसर) को कॉन्फ़िगर करने की अनुमति देता है।
अंत में, ठीक . क्लिक करें और सत्र प्राप्त करें। आइए क्यूब प्रोसेसिंग चलाएं और घटनाओं द्वारा प्रसंस्करण देखें। लाइव डेटा मोड पर स्विच करें।
निम्नलिखित स्क्रीनशॉट के शीर्ष पर, हम अपने उदाहरण के साथ अभी होने वाली घटनाओं को देख सकते हैं। घटनाओं का विवरण नीचे दिखाया गया है। घटना विवरण के किसी भी मूल्य को शीर्ष पर एक अलग कॉलम के रूप में जोड़ा जा सकता है। ईवेंट विवरण के चयनित मान पर राइट-क्लिक करें और उन्हें एक तालिका में देखें।
परिणाम में, हमें निम्नलिखित दृश्य मिलते हैं:
इसलिए, विस्तारित ईवेंट रीयल-टाइम मोड में हमारे प्रसंस्करण का विश्लेषण करने की अनुमति देते हैं। हम समझ सकते हैं कि प्रत्येक वस्तु के प्रसंस्करण में कितना समय लगता है, कितने संसाधनों का उपयोग किया जाता है। यह निष्कर्ष निकालने और कमजोरियों को खोजने में मदद करता है। इसके अलावा, हम सिस्टम को ओवरलोड नहीं करते हैं और उत्पादकता हानि नहीं पाते हैं।
आप XMLA के माध्यम से भी सत्र बना सकते हैं। आप GitHub पर स्क्रिप्ट को पुनः प्राप्त कर सकते हैं।
सत्र को रोकना और हटाना SSMS और XMLA दोनों के माध्यम से संभव है।
- SSMS के माध्यम से (हालांकि, 2016 में त्रुटि हुई और मैं इंटरफ़ेस के माध्यम से सत्र को हटाने में विफल रहा)।
- XMLA स्क्रिप्ट - यहां से डाउनलोड की जा सकती है।
यह SSAS के लिए विस्तारित ईवेंट्स के बारे में लेख का पहला भाग है। दूसरे भाग में, हम क्यूब में क्वेरी उत्पादकता विश्लेषण के परिदृश्य पर विचार करेंगे, ट्रेस फ़ाइल के साथ काम करेंगे और Power BI के माध्यम से फ़ाइल का विश्लेषण करेंगे।
मैं निम्नलिखित ब्लॉग पोस्ट पर एक नज़र डालने की भी सलाह देता हूं:
- पिनल डेव - एसक्यूएल सर्वर - एसक्यूएल प्रोफाइलर बनाम विस्तारित इवेंट
- क्रिस वेब — प्रोफाइलर, एक्सटेंडेड इवेंट्स एंड एनालिसिस सर्विसेज। हालांकि लेख के लेखक का कहना है कि प्रोइलर लगभग उत्पादन सर्वर पर उपयोग नहीं किया जाता है, लेकिन सर्वर लोड के साथ इसकी समस्याओं की पुष्टि करता है।
- ब्रेंट ओज़र — SQL सर्वर एक्सटेंडेड इवेंट्स