MS SQL सर्वर की प्रभावशीलता की निगरानी करना। प्रायोगिक उपकरण

अप्रभावी टी-एसक्यूएल स्टेटमेंट खोजने के लिए क्वेरी एनालाइज़र का उपयोग करने के अलावा, आप उपयोगिता का भी उपयोग कर सकते हैं SQL सर्वर प्रोफाइलर... प्रोफाइलर आपको उन सभी टी-एसक्यूएल स्टेटमेंट्स की निगरानी करने की अनुमति देता है जो सिस्टम पर निष्पादित होते हैं, ग्राफिक रूप से उन स्टेटमेंट्स के बारे में जानकारी प्रदर्शित करते हैं। Profiler छँटाई और फ़िल्टरिंग क्षमताएँ भी प्रदान करता है जिनका उपयोग आप T-SQL कथनों की पहचान करने के लिए कर सकते हैं जो CPU और I / O संसाधनों के थोक का उपयोग कर रहे हैं। इस जानकारी के साथ, आप यह निर्धारित कर सकते हैं कि उन्हें अनुकूलित करने के लिए कौन से टी-एसक्यूएल कथनों पर ध्यान केंद्रित करना है। किसी एप्लिकेशन से कॉल किए गए T-SQL स्टेटमेंट को Profiler में देखा जा सकता है; आपको स्वयं एप्लिकेशन के स्रोत कोड तक पहुंच की आवश्यकता नहीं है।

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

Profiler सुविधा को इनवोक करने और ट्रेसिंग शुरू करने के लिए इन चरणों का पालन करें।

  1. स्टार्ट बटन पर क्लिक करें, प्रोग्राम्स को इंगित करें, माइक्रोसॉफ्ट एसक्यूएल सर्वर को इंगित करें और फिर प्रोफाइलर का चयन करें। जब आप पहली बार Profiler विंडो खोलेंगे, तो वह खाली होगी। SQL सर्वर में कोई पैनल नहीं खुलेगा और कोई प्रोफाइलिंग नहीं की जाएगी।
  2. प्रोफाइलिंग बनाना शुरू करने के लिए, आपको मौजूदा ट्रेस टेम्पलेट चलाना चुनना होगा या चलाने के लिए एक नया ट्रेस टेम्पलेट बनाना होगा। (स्टार्टअप प्रक्रिया चरण 4 में वर्णित है।) SQL Server 2000 Profiler आपके लिए चुनने के लिए विभिन्न प्रकार के ट्रेस टेम्पलेट प्रदान करता है। इन ट्रेस टेम्प्लेट का उपयोग करने से आपका बहुत समय बच सकता है क्योंकि आपको शुरुआत से ही ट्रेस बनाने की आवश्यकता नहीं होती है। ट्रेस टेम्प्लेट की सूची देखने के लिए, फ़ाइल मेनू पर क्लिक करें, ओपन कमांड को इंगित करें, और ओपन डायलॉग बॉक्स प्रदर्शित करने के लिए ट्रेस टेम्प्लेट चुनें (चित्र 35.16)।


    चावल। 35.16.

    निम्न ट्रेस टेम्पलेट SQL सर्वर के साथ प्रदान किए जाते हैं।
    • SQLServerProfilerSP_Counts.tdf... चल रही संग्रहीत प्रक्रियाओं की संख्या की गणना करता है। परिणामों को संग्रहीत कार्यविधि नाम से समूहीकृत किया जाता है और इसमें संबंधित प्रक्रिया को चलाने की संख्या शामिल होती है।
    • SQLServerProfilerStandard.tdf... कनेक्शन के बारे में सामान्य जानकारी एकत्र करता है, निष्पादित संग्रहीत कार्यविधियाँऔर SQL पैकेज निष्पादन के क्रम में।
    • SQLServerProfilerTSQL.tdf... सभी टी-एसक्यूएल स्टेटमेंट्स के बारे में जानकारी को उपयोगकर्ताओं से एसक्यूएल सर्वर में दर्ज किए जाने के क्रम में इकट्ठा करता है। इस ट्रेस में केवल टी-एसक्यूएल स्टेटमेंट और उनके चलने का समय होता है।
    • SQLServerProfilerTSQL_Duration.tdf... चल रहे टी-एसक्यूएल कथनों के साथ-साथ उन कथनों को निष्पादित करने में लगने वाला समय (मिलीसेकंड में) प्रदर्शित करता है।
    • SQLServerProfilerTSQL_Groped.tdf... SQLServerProfilerTSQL के समान डेटा एकत्र करता है, लेकिन उन कथनों को चलाने वाले उपयोगकर्ता द्वारा समूह कथन करता है।
    • SQLServerProfilerTSQL_Replay.tdf... चलाए गए T-SQL कथनों के बारे में विस्तृत जानकारी प्रदान करता है। इस ट्रेस में डेटा होता है जिसका उपयोग क्वेरी एनालाइज़र में T-SQL स्टेटमेंट को फिर से चलाने के लिए किया जा सकता है।
    • SQLServerProfilerTSQL_SPs.tdf।उन प्रक्रियाओं के भीतर निर्दिष्ट संग्रहीत कार्यविधियों के साथ-साथ T-SQL कमांड को आउटपुट करता है। परिणाम निष्पादन के क्रम में प्रदर्शित होते हैं।
    • SQLServerProfilerTuning.tdf... संग्रहीत कार्यविधि और SQL पैकेज निष्पादन के बारे में डेटा एकत्र करता है।
    ये ट्रेस पैटर्न बहुत मददगार हो सकते हैं। उदाहरण के लिए, ट्रेस टेम्पलेट SQLServerProfilerTSQL_Duration आपको T-SQL कथनों की पहचान करने में मदद कर सकता है जो निष्पादित करने में सबसे लंबा समय लेते हैं। यह जानकारी इसके लिए शुरुआती बिंदु के रूप में काम कर सकती है क्वेरी अनुकूलन... ऑपरेटर समय लेने वाला हो सकता है क्योंकि वे बहुत काम कर रहे हैं या शायद इसलिए कि वे अप्रभावी हैं। जैसा कि आप अगले चरण में देखेंगे, आपको किसी भी ट्रेसिंग के लिए एक पूर्वनिर्धारित टेम्पलेट का उपयोग करना चाहिए।
  3. ट्रेसिंग प्रारंभ करने के लिए, फ़ाइल क्लिक करें, नया इंगित करें और फिर ट्रेस चुनें। SQL सर्वर से कनेक्ट करें संवाद बॉक्स प्रकट होता है (चित्र 35.17)। इस डायलॉग बॉक्स में, ट्रेस करने के लिए SQL सर्वर सिस्टम चुनें और फिर OK बटन पर क्लिक करें।


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


    चावल। 35.18.
  5. इसके बाद, ईवेंट टैब पर क्लिक करें (चित्र 35.19)।


    चावल। 35.19.इस टैब में, आप एक या कई ईवेंट का चयन कर सकते हैं जिनकी निगरानी इस ट्रेस में की जाएगी। आप घटनाओं और विशिष्ट घटनाओं के विभिन्न वर्गों (श्रेणियों) को ट्रैक कर सकते हैं। उपलब्ध ईवेंट क्लास सूची बॉक्स में ईवेंट क्लासेस जैसे कर्सर, त्रुटियाँ और चेतावनियाँ, लॉक्स, ऑब्जेक्ट, स्कैन, SQL ऑपरेटर्स SQL), संग्रहीत कार्यविधियाँ, लेन-देन और TSQL शामिल हैं।
  6. उन घटनाओं का चयन करने के बाद जिन्हें आप ट्रेस करना चाहते हैं, डेटा कॉलम टैब पर क्लिक करें (चित्र 35.20)। इस टैब में, निर्दिष्ट करें कि इस ट्रेस के दौरान कौन सा डेटा एकत्र किया जाएगा। इस डेटा में समाप्ति समय शामिल हो सकता है,

इस लेख से आप क्या सीखेंगे?

  • SQL Profiler Trace Tool का उद्देश्य
  • क्वेरी के टेक्स्ट को DBMS में कैसे ट्रैक करें जिसमें 1C क्वेरी का अनुवाद किया गया है
  • ट्रेस फ़िल्टर सेटिंग्स
  • एसक्यूएल प्रोफाइलर को निजीकृत कैसे करें

अक्सर, काम में एक स्थिति उत्पन्न होती है जब किसी कारण से 1C में अनुरोध धीरे-धीरे काम करता है, लेकिन अनुरोध पाठ का विश्लेषण हमें किसी भी समस्या के बारे में नहीं बताता है।

ऐसे में आपको इस समस्या का निचले स्तर पर अध्ययन करना होगा। ऐसा करने के लिए, हमें SQL क्वेरी के टेक्स्ट और क्वेरी प्लान को देखना होगा। इसके लिए आप SQL Profiler का इस्तेमाल कर सकते हैं।

एसक्यूएल प्रोफाइलर - उद्देश्य

SQL Profiler MS SQL सर्वर में शामिल एक प्रोग्राम है जिसे SQL सर्वर में होने वाली सभी घटनाओं को देखने के लिए डिज़ाइन किया गया है। दूसरे शब्दों में, एक ट्रेस रिकॉर्ड करने की आवश्यकता है।

1सी प्रोग्रामर के लिए यह टूल किन मामलों में उपयोगी हो सकता है? सबसे पहले, आप SQL में क्वेरी का टेक्स्ट प्राप्त कर सकते हैं और इसकी योजना देख सकते हैं। यह प्रौद्योगिकी पत्रिका (टीजे) में भी किया जा सकता है, लेकिन टीजे में अनुरोध करने की योजना इतनी सुविधाजनक नहीं है और इसके लिए कुछ कौशल और क्षमताओं की आवश्यकता होती है। इसके अलावा, प्रोफाइलर में, आप न केवल एक पाठ्य, बल्कि एक ग्राफिकल क्वेरी निष्पादन योजना भी देख सकते हैं, जो अधिक सुविधाजनक है।

प्रोफाइलर आपको यह पता लगाने की भी अनुमति देता है:

  • एक निश्चित समय से अधिक समय के लिए अनुरोध
  • एक विशिष्ट तालिका के खिलाफ प्रश्न
  • ताले का इंतज़ार
  • समय समाप्ति
  • गतिरोध, आदि

एसक्यूएल प्रोफाइलर के साथ प्रश्नों का विश्लेषण

प्रोफाइलर अक्सर विशेष रूप से प्रश्नों का विश्लेषण करने के लिए प्रयोग किया जाता है। और साथ ही, सभी निष्पादन योग्य प्रश्नों का विश्लेषण करने की आवश्यकता नहीं है, लेकिन एक निश्चित 1C क्वेरी को SQL में कैसे अनुवादित किया जाता है, और इसकी निष्पादन योजना पर ध्यान दें।

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

ट्रेस में अनुरोध को ट्रैक करने के लिए, निम्न चरणों का पालन करें:

1. SQL प्रोफाइलर लॉन्च करें: प्रारंभ - सभी प्रोग्राम - Microsoft SQL Server 2008 R2 - उत्पादकता उपकरण - SQLProfiler.

2. एक नया ट्रेस बनाएं: फ़ाइल - ट्रेस बनाएँ(Ctrl + N)।

3. उस DBMS सर्वर को निर्दिष्ट करें जिस पर हमारा डेटाबेस स्थित है और क्लिक करें जुडिये:

हमें किसी अन्य कंप्यूटर पर स्थित DBMS सर्वर को ट्रेस करने से कोई नहीं रोकता है।

4. दिखाई देने वाली विंडो में ट्रेस गुणबुकमार्क पर स्विच करें घटनाओं का चयन:

चूंकि हमें प्रश्नों और क्वेरी योजनाओं की आवश्यकता है, इसलिए हमें संबंधित घटनाओं को सक्षम करने की आवश्यकता है। संपत्तियों और घटनाओं की पूरी सूची प्रदर्शित करने के लिए, झंडे चालू करें सभी इवेंट दिखाएंतथा सभी कॉलम दिखाएं... अब आपको केवल नीचे दिए गए चित्र में दिखाए गए ईवेंट का चयन करने की आवश्यकता है, बाकी को अक्षम किया जाना चाहिए:

इन घटनाओं का विवरण:

  • ShowplanStatisticsProfile - क्वेरी निष्पादन की पाठ योजना
  • ShowplanXMLStatisticsProfile - ग्राफिकल क्वेरी निष्पादन योजना
  • RPC: पूर्ण- अनुरोध का पाठ, यदि इसे एक प्रक्रिया के रूप में निष्पादित किया जाता है (यदि मापदंडों के साथ 1C अनुरोध निष्पादित किया जाता है)
  • SQL: बैच पूर्ण - अनुरोध का पाठ, यदि इसे सामान्य अनुरोध के रूप में निष्पादित किया जाता है (यदि पैरामीटर के बिना 1C अनुरोध निष्पादित किया गया था)

6. इस स्तर पर, आपको चयनित घटनाओं के लिए फ़िल्टर को कॉन्फ़िगर करने की आवश्यकता है। यदि फ़िल्टर स्थापित नहीं है, तो हम इस DBMS सर्वर पर स्थित सभी डेटाबेस के लिए क्वेरी देखेंगे। डेटाबेस नाम से फ़िल्टर सेट करने के लिए कॉलम फ़िल्टर बटन पर क्लिक करें:

अब हम ट्रेस में केवल "TestBase_8_2" डेटाबेस के प्रश्नों को देखते हैं।

आप अन्य क्षेत्रों पर भी फ़िल्टर लगा सकते हैं, उनमें से सबसे दिलचस्प हैं:

  • अवधि
  • टेक्स्टडेटा (आमतौर पर अनुरोध टेक्स्ट)
  • RowCounts (क्वेरी द्वारा लौटाई गई पंक्तियों की संख्या)

मान लें कि हमें "TestBase_8_2" डेटाबेस में 3 सेकंड से अधिक समय तक चलने वाली "_InfoRg4312" तालिका के सभी अनुरोधों को "पकड़ने" की आवश्यकता है। इस आवश्यकता है:

ए) डेटाबेस द्वारा फ़िल्टर सेट करें (ऊपर देखें)
बी) अवधि के अनुसार फ़िल्टर सेट करें (मिलीसेकंड में सेट करें):

सी) अनुरोध टेक्स्ट द्वारा फ़िल्टर सेट करें:

अनुरोध टेक्स्ट द्वारा फ़िल्टर सेट करने के लिए, मास्क का उपयोग करें। यदि आप एक से अधिक तालिकाओं तक पहुँचने वाली क्वेरीज़ का ट्रैक रखना चाहते हैं, तो "जैसा दिखता है" अनुभाग में एक से अधिक आइटम बनाए जाते हैं। ओवरलैड फ़िल्टर स्थितियां एक साथ काम करती हैं।

7. अब बटन का उपयोग करके ट्रेस करना शुरू करें Daudखिड़की में ट्रेस गुणऔर उन घटनाओं का निरीक्षण करें जो स्थापित फिल्टर के अंतर्गत आती हैं, जिनका प्रदर्शन कॉन्फ़िगर किया गया है।

रूटिंग को नियंत्रित करने के लिए कमांड पैनल बटन का उपयोग किया जाता है:

बटन का उद्देश्य:

  • रबड़- ट्रेस विंडो को साफ करता है
  • शुरू- ट्रेसिंग शुरू करता है
  • ठहराव- ट्रेसिंग को रोक देता है, जब आप स्टार्ट पर क्लिक करते हैं, तो ट्रेसिंग रिज्यूमे
  • विराम- ट्रेस करना बंद कर देता है

8. ट्रेस विंडो में दो भाग होते हैं। ऊपरी भाग में घटनाएँ और उनके गुण होते हैं, निचले भाग में - घटनाओं के प्रकार के आधार पर जानकारी। हमारे उदाहरण के लिए, या तो अनुरोध टेक्स्ट या इसकी योजना यहां प्रदर्शित की जाएगी।

9. आइए क्वेरी को 1C क्वेरी कंसोल में चलाएं और देखें कि यह प्रोफाइलर में कैसे दिखाई देगा:

आप ट्रेस व्यवहार से देख सकते हैं कि अंत में कई अनुरोध थे, और उनमें से केवल एक ही हमारे लिए रुचिकर है। शेष अनुरोध सेवा अनुरोध हैं।

10. घटनाओं के गुण मूल्यांकन करना संभव बनाते हैं:

  • अनुरोध में कितने सेकंड लगे (अवधि)
  • कितने तार्किक पठन थे
  • परिणाम के रूप में क्वेरी कितनी पंक्तियाँ लौटी (RowCounts), आदि।

हमारे मामले में, अनुरोध में 2 मिलीसेकंड लगे, 4 तार्किक रीड किए और 1 पंक्ति लौटा दी।

11. यदि आप उपरोक्त एक घटना को देखते हैं, तो आप चित्र योजना को चित्रमय रूप में देख सकते हैं:

योजना से यह देखा जा सकता है कि मूल्य के आधार पर सूचकांक पर खोज की जाती है, इस योजना को आदर्श नहीं कहा जा सकता है, क्योंकि सूचकांक कवर नहीं कर रहा है, कोड और नाम फ़ील्ड KeyLookup का उपयोग करके प्राप्त किए जाते हैं, जिसमें 50% समय लगता है। .

संदर्भ मेनू का उपयोग करके, परिणामी ग्राफिकल क्वेरी योजना को * .SQLPlan एक्सटेंशन के साथ एक अलग फ़ाइल में सहेजा जा सकता है और किसी अन्य कंप्यूटर पर प्रोफाइलर में खोला जा सकता है या SQL सेंट्री प्लान एक्सप्लोरर प्रोग्राम का उपयोग कर सकता है, जो अधिक उन्नत है।

12. अगर हम और भी ऊपर जाते हैं, तो हमें वही क्वेरी प्लान दिखाई देगा, लेकिन टेक्स्ट फॉर्म में। यह वह योजना है जो TZ, MCC और अन्य 1C प्रदर्शन निगरानी उपकरणों में प्रदर्शित होती है।

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

फिर हम निर्दिष्ट सर्वर पर डेटाबेस का चयन करते हैं, उस तालिका का नाम निर्दिष्ट करें जहां ट्रेस सहेजा जाएगा। आप किसी मौजूदा तालिका का उपयोग कर सकते हैं, या इसे एक नया नाम दे सकते हैं, और फिर यह तालिका स्वचालित रूप से बनाई जाएगी।

अब हमारी तालिका में किसी भी जटिलता के प्रश्नों को बनाना संभव है: उदाहरण के लिए, सबसे लंबे समय तक चलने वाले प्रश्नों की खोज करें।

आपको यह भी याद रखना होगा कि अवधि एक सेकंड के मिलियनवें हिस्से में तालिका में संग्रहीत होती है, और परिणाम प्रदर्शित करते समय, आपको मान को मिलीसेकंड में बदलने की आवश्यकता होती है। तालिका में एक RowNumber कॉलम भी है जो ट्रेस में इस पंक्ति की संख्या दिखाता है।

14. प्रश्नों का विश्लेषण करने के लिए प्रोफाइलर के लगातार उपयोग के साथ, वांछित घटनाओं और फिल्टर को लगातार समायोजित करने से आपका बहुत समय लगेगा।

इस मामले में, ट्रेस टेम्प्लेट हमारी मदद करेंगे, जहां हम अपनी ज़रूरत के फ़िल्टर और कॉलम ऑर्डर को कॉन्फ़िगर करते हैं, और फिर एक नया ट्रेस बनाते समय मौजूदा टेम्प्लेट का उपयोग करते हैं।

टेम्प्लेट बनाने के लिए, मेनू का उपयोग करें फ़ाइल - टेम्प्लेट - नया टेम्प्लेट:

पहले टैब पर, सर्वर प्रकार, टेम्पलेट नाम निर्दिष्ट करें और यदि आवश्यक हो, तो डिफ़ॉल्ट रूप से इस टेम्पलेट का उपयोग करने के लिए ध्वज सेट करें।

दूसरे टैब पर, हम आवश्यक घटनाओं का चयन करते हैं और फ़िल्टर कॉन्फ़िगर करते हैं (जैसा कि ऊपर दिखाया गया है)।

एक नया ट्रेस बनाते समय, हम आवश्यक टेम्प्लेट निर्दिष्ट कर सकते हैं, और फिर दूसरे टैब पर सभी फ़िल्टर और ईवेंट बनाए गए टेम्प्लेट के अनुसार स्वचालित रूप से भर जाएंगे।

बर्मिस्ट्रोव एंड्री

आज हम उपयोग करके अपने आवेदन के प्रदर्शन को मापेंगे विजुअल स्टूडियो प्रोफाइलिंग टूल.

विजुअल स्टूडियो प्रोफाइलिंग टूलडेवलपर्स को एप्लिकेशन और कोड प्रदर्शन को मापने, मूल्यांकन करने की अनुमति देता है। डेवलपर को निर्बाध नियंत्रण प्रदान करने के लिए ये उपकरण पूरी तरह से IDE में बनाए गए हैं।
इस ट्यूटोरियल में, हम एप्लिकेशन को स्टेप बाय स्टेप प्रोफाइल करेंगे। पीपुलट्रैक्सका उपयोग करते हुए सैम्पलिंगतथा उपकरणएप्लिकेशन प्रदर्शन में समस्याओं की पहचान करने के लिए प्रोफाइलिंग तकनीक।

बहुत सारे चित्र।

तैयारी

इस ट्यूटोरियल को पूरा करने के लिए, आपको आवश्यकता होगी:
  • माइक्रोसॉफ्ट विजुअल स्टूडियो 2010
  • सी # का इंटरमीडिएट ज्ञान
  • पीपुलट्रैक्स परीक्षण आवेदन की एक प्रति, जिसे एमएसडीएन कोड गैलरी से डाउनलोड किया जा सकता है

प्रोफाइलिंग के तरीके

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

प्रत्येक निश्चित समय अंतराल में कॉल स्टैक के बारे में जानकारी एकत्र की जाती है। इस डेटा के आधार पर, प्रदर्शन की गणना की जाती है। प्रारंभिक रूपरेखा के लिए और CPU उपयोग की समस्याओं की पहचान करने के लिए उपयोग किया जाता है।

उपकरण
उपकरण- प्रत्येक बुलाए गए फ़ंक्शन के चलने के समय के बारे में विस्तृत जानकारी एकत्र करता है। I / O संचालन के प्रदर्शन को मापने के लिए उपयोग किया जाता है।

विधि अपने कोड को एक बाइनरी फ़ाइल में इंजेक्ट करती है जो फ़ाइल में प्रत्येक फ़ंक्शन के लिए सिंक्रनाइज़ेशन (समय) जानकारी को कैप्चर करती है, और प्रत्येक फ़ंक्शन के लिए जिसे इसमें कहा जाता है।

बीता हुआ समय प्रदान करने के लिए रिपोर्ट में 4 मान हैं:

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

यह प्रोफाइलिंग विधियों की समीक्षा को समाप्त करता है और यह सीखना जारी रखता है कि एप्लिकेशन को कैसे प्रोफाइल किया जाए।

नमूना रूपरेखा

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

व्यंजक सूची में विश्लेषणपर क्लिक करें प्रदर्शन विज़ार्ड लॉन्च करें.

इस चरण में, आपको एक प्रोफाइलिंग विधि चुननी होगी। CPU नमूनाकरण (अनुशंसित) का चयन करें और अगला क्लिक करें।

हम चुनते हैं कि हम किस एप्लिकेशन को प्रोफाइल करेंगे, यह है पीपुलट्रैक्सऔर अगला बटन। अगले में, समाप्त क्लिक करें और प्रोफाइलर और हमारा आवेदन स्वचालित रूप से शुरू हो जाएगा। स्क्रीन पर हम PeopleTrax प्रोग्राम देखते हैं। बटन दबाओ लोगों से मिलें, हम काम के पूरा होने की प्रतीक्षा कर रहे हैं और निर्यात जानकारी... हम नोटबुक और प्रोग्राम को बंद कर देते हैं और प्रोफाइलर एक रिपोर्ट तैयार करेगा।

प्रोफाइलर जनरेट की गई रिपोर्ट (* .vsp)

नमूनाकरण विधि रिपोर्ट विश्लेषण
वी सारांशसंपूर्ण रूपरेखा समय में CPU उपयोग का एक ग्राफ प्रदर्शित करता है। सूची गर्म पथउन कॉल शाखाओं को दिखाता है जो सबसे अधिक सक्रिय थीं। और सूची में अधिकांश व्यक्तिगत कार्य करने वाले कार्य(जिसका नाम अपने लिए बोलता है) - उपयोग किए जाने वाले कार्य हेइन कार्यों के शरीर में लंबी प्रक्रिया समय।

सूची देख रहे हैं गर्म पथहम देखते हैं कि विधि PeopleNS.People.GetNamesकॉल थ्रेड में लगभग अंतिम स्थान लेता है। फिर आप प्रदर्शन को बेहतर बनाने के लिए इसका अधिक बारीकी से अध्ययन कर सकते हैं। पर क्लिक करें PeopleNS.People.GetNamesऔर हमारे खुलने से पहले समारोह विवरण.

इस विंडो में दो भाग होते हैं। व्यय विंडो एक ग्राफिकल प्रतिनिधित्व प्रदान करती है कि फ़ंक्शन कैसे काम करता है, और फ़ंक्शन और उसके कॉलर्स का योगदान चुने गए उदाहरणों की संख्या में होता है। आप माउस से उस पर क्लिक करके संबंधित फ़ंक्शन को बदल सकते हैं।

फंक्शन कोड व्यूउपलब्ध होने पर विधि कोड दिखाता है और चयनित विधि में सबसे "महंगी" पंक्तियों को हाइलाइट करता है। जब विधि का चयन किया जाता है GetNamesआप देख सकते हैं कि यह एप्लिकेशन संसाधनों से स्ट्रिंग्स का उपयोग करके पढ़ता है स्ट्रिंग रीडरप्रत्येक पंक्ति को में जोड़कर सारणी सूची... इस भाग को सुधारने का कोई स्पष्ट तरीका नहीं है।

चूंकि PeopleNS.People.GetPeopleकॉल करने वाला इकलौता GetNames- दबाएँ लोगों से मिलें... यह विधि वापस आती है सारणी सूचीवस्तुओं व्यक्ति सूचनाNS.व्यक्ति सूचनाविधि द्वारा लौटाए गए लोगों और कंपनियों के नाम के साथ GetNames... फिर भी, GetNamesहर बार इसे बनाए जाने पर दो बार कॉल किया जाता है व्यक्तिसूचना... (यह पीले और लाल हाइलाइटिंग में दिखाया गया है)। जाहिर है, आप विधि की शुरुआत में केवल एक बार सूचियां बनाकर विधि को आसानी से अनुकूलित कर सकते हैं।

वैकल्पिक संस्करण लोगों से मिलेंयह कोड में भी है और हम इसे अभी शामिल करेंगे। ऐसा करने के लिए, आपको परिभाषित करने की आवश्यकता है OPTIMIZED_GETPEOPLEप्रोजेक्ट गुण विंडो में एक सशर्त संकलन प्रतीक के रूप में लोगतथा पीपुलट्रैक्स. और हाँ, यदि आप मेरे प्रयोगों को दोहराना चाहते हैं, तो आपको परियोजना में एक गलती को सुधारना होगा। अनुकूलित वर्ग कंस्ट्रक्टर में संसाधन नाम की वर्तनी सही नहीं है: PeopleNS.Resources की PeopleNS.Resource के साथ आवश्यकता होती है। अगर इसे नहीं बदला गया, तो सब कुछ भयानक गलतियों के साथ गिर जाएगा।

अनुकूलित विधि अगले निर्माण पर पुराने को बदल देगी।

वर्तमान सत्र में प्रोफाइलिंग को फिर से शुरू करें क्लिक करके प्रोफाइलिंग के साथ लॉन्च करेंखिड़की में प्रदर्शन एक्सप्लोरर... पर क्लिक करें लोगों से मिलेंतथा निर्यात जानकारी... हम नोटबुक और प्रोग्राम को बंद कर देते हैं और प्रोफाइलर एक नई रिपोर्ट तैयार करेगा।

दो रिपोर्ट की तुलना करने के लिए - RMB और दोनों का चयन करें प्रदर्शन रिपोर्ट की तुलना करें... डेल्टा कॉलम संस्करण प्रदर्शन में अंतर दिखाता है आधारभूतबाद में . के साथ तुलना... हम चुनते हैं समावेशी नमूने%और आवेदन करें।

जैसा कि आप देख सकते हैं, प्रदर्शन लाभ नग्न आंखों को दिखाई देता है

इंस्ट्रुमेंटेशन प्रोफाइलिंग

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

इस बार, हम अपने विश्लेषण को डेटा निर्यात पर केंद्रित करेंगे, जिसमें लोगों की एक सूची नोटपैड फ़ाइल में लिखी जाती है।

रूपरेखा
वी प्रदर्शन एक्सप्लोररचुनें उपकरणऔर स्टार्ट प्रोफाइल पर क्लिक करें। लोगों को प्राप्त करें पर क्लिक करें। लोगों को लोड करने के बाद, 10 सेकंड प्रतीक्षा करें और डेटा निर्यात करें पर क्लिक करें। हम नोटबुक और प्रोग्राम को बंद करते हैं। प्रोफाइलर एक रिपोर्ट तैयार करेगा।
विश्लेषण
प्रोफाइलर निम्न चित्र प्रदर्शित करेगा:

हमें वह जानकारी नहीं मिली जो हम चाहते थे। आइए डेटा को फ़िल्टर करें। हमने जानबूझकर उस प्रोफाइलिंग डेटा को फ़िल्टर करने के लिए 10 सेकंड तक प्रतीक्षा की, जिसकी हमें अभी आवश्यकता नहीं है। हम 13 से अंत तक चिह्नित करते हैं और दबाते हैं चयन द्वारा फ़िल्टर करें... पहले से ही एक अलग परिणाम:

गर्म पथविधि से पता चलता है concatएक लंबा समय लगता है (यह अधिकांश व्यक्तिगत कार्य सूची वाले कार्यों में भी शीर्ष पर है)। पर क्लिक करें concatएक विधि के बारे में विस्तृत जानकारी देखने के लिए।

यह स्पष्ट है कि PeopleTrax.Form1.ExportDataकॉल करने का एकमात्र तरीका है concat... धकेलना PeopleTrax.Form1.ExportDataकॉलिंग विधियों में ( फ़ंक्शन इस फ़ंक्शन को कॉल कर रहा है).

हम कोड विंडो में विधि का विश्लेषण करते हैं। ध्यान दें कि Concat के लिए कोई सीधी कॉल नहीं है। साथ में यह संकार्य का उपयोग है += जिसे संकलक विधियों से बदल देता है System.String.Concat... जैसा कि अब तक लगभग सभी जानते हैं, .NET में स्ट्रिंग्स में कोई भी परिवर्तन स्ट्रिंग के पुराने संस्करण को नष्ट कर देगा और एक संशोधित स्ट्रिंग बनाएगा। सौभाग्य से .NET में एक वर्ग है स्ट्रिंगबिल्डरजो इस तरह के काम के लिए बनाया गया है।

प्रोजेक्ट में पहले से ही एक अनुकूलित विधि का उपयोग कर रहा है स्ट्रिंगबिल्डर... PeopleTrax प्रोजेक्ट में, एक संकलन चर जोड़ें OPTIMIZED_EXPORTDATA... प्रोफाइलर को फिर से सहेजें और चलाएं और रिपोर्ट की तुलना करें। यह तुरंत स्पष्ट (और तार्किक रूप से समझने योग्य) है कि हमने कॉनकैट कॉल (6000 से 0 बार तक) को अनुकूलित किया है।

एप्लिकेशन लॉन्च करने के बाद, आप आंख से प्रदर्शन में उल्लेखनीय सुधार देख सकते हैं। प्रोफाइलिंग को फिर से चलाना बहुत महत्वपूर्ण है, यहां तक ​​कि दृश्यमान सुधार भी हैं। समस्या को ठीक करने के बाद नया डेटा देखने से अन्य एप्लिकेशन प्रदर्शन समस्याएं दिखाई दे सकती हैं।

SQL सर्वर 2005 प्रोफाइलर, एप्लिकेशन क्वेरी ट्रैकिंग, ट्रेस पैटर्न, क्वेरी सूचना ग्रुपिंग

उपयोगकर्ता गतिविधि की निगरानी के लिए सबसे उपयोगी उपकरणों में से एक है प्रोफाइलर (प्रोफाइलर) इस टूल का उपयोग करके, आप यह पता लगा सकते हैं कि SQL सर्वर वर्तमान में कौन से कमांड निष्पादित कर रहा है। एक प्रोफाइलर का उपयोग करने की आवश्यकता बहुत बार उत्पन्न होती है। यहां कुछ मानक स्थितियां हैं जहां इसके बिना करना बहुत मुश्किल हो सकता है:

q आप एप्लिकेशन के संचालन का विश्लेषण करना चाहते हैं और देखना चाहते हैं कि यह सर्वर पर कौन से आदेश निष्पादित करता है। यह जानकारी काम आ सकती है:

· यह समझने के लिए कि कुछ ऑपरेशन करते समय यह एप्लिकेशन डेटाबेस में किन तालिकाओं के साथ काम करता है। बहुत बार एक उद्यम में एक ऐसे रूप में रिपोर्ट बनाने की आवश्यकता होती है जो एप्लिकेशन द्वारा प्रदान नहीं की जाती है, और डेवलपर्स शायद ही कभी डेटाबेस की संरचना के बारे में विस्तृत जानकारी प्रदान करते हैं;

· यह पता लगाने के लिए कि प्रदर्शन अनुरोधों के दृष्टिकोण से एप्लिकेशन द्वारा सर्वर को कितना इष्टतम भेजा जाता है। व्यवहार में, प्रोफाइलर का उपयोग करते समय, आप अक्सर पूरी तरह से उप-इष्टतम प्रश्नों की पहचान कर सकते हैं, उदाहरण के लिए, जब क्लाइंट पर डेटा को फ़िल्टर या सॉर्ट किया जाता है;

यह समझने के लिए कि सर्वर पर एप्लिकेशन से कौन सा ट्रांजैक्ट -एसक्यूएल कमांड निष्पादित किया जाता है, एक त्रुटि होती है;

q लंबे समय तक उपयोगकर्ता गतिविधि के बारे में जानकारी एकत्र करने के लिए (उदाहरण के लिए, आप कार्य दिवस के दौरान एक निश्चित एप्लिकेशन द्वारा सर्वर को भेजे गए सभी अनुरोध एकत्र कर सकते हैं)। एकत्रित जानकारी को तब मैन्युअल रूप से विश्लेषण किया जा सकता है या स्वचालित विश्लेषण के लिए डेटाबेस ट्यूनिंग सलाहकार को पास किया जा सकता है;

q वास्तविक समय में सर्वर संचालन की निगरानी के लिए। उदाहरण के लिए, यदि सर्वर अचानक धीमा हो जाता है, तो आप प्रोफाइलर विंडो में देख सकते हैं कि वर्तमान में इस पर कौन से कमांड निष्पादित किए जा रहे हैं।

SQL सर्वर 2005 में, प्रोफाइलर में बहुत सी नई चीज़ें हैं:

क्ष एकीकरण सेवा इवेंट प्रोफाइलिंग पेश की गई थी। अब आप नए डीटीएस पैकेज की प्रगति को ट्रैक करने के लिए प्रोफाइलर का उपयोग कर सकते हैं;

क्ष कमांड निष्पादन सूचना रिकॉर्ड करते समय अब ​​सिस्टम मॉनिटर से काउंटर रीडिंग रिकॉर्ड करना संभव है;

q कई नए ईवेंट और सूचना स्रोत प्रोफाइलर में जोड़े गए हैं जिन्हें ट्रेस फ़ाइल में लिखे जाने के लिए चुना जा सकता है। ट्रेस फ़ाइल में क्या लिखना है इसकी परिभाषा अब XML स्वरूप में सहेजी जा सकती है;

q अब आप XML स्वरूप में ट्रेस परिणाम सहेज सकते हैं (ANSI, OEM, UNICODE स्वरूपों में लिखने की क्षमता भी सहेजी जाती है);

क्ष यहां तक ​​कि प्रोफाइलर द्वारा इंटरसेप्ट किए गए ट्रांजैक्ट-एसक्यूएल कमांड की निष्पादन योजनाओं को एक्सएमएल प्रारूप में सहेजा जा सकता है। इन योजनाओं को आगे के विश्लेषण के लिए SQL सर्वर प्रबंधन स्टूडियो में खोला जा सकता है;

q अब सीधे प्रोफाइलर विंडो में घटनाओं को समूहीकृत करना संभव है। उदाहरण के लिए, ग्रुपिंग का उपयोग करके, आप बहुत आसानी से गणना कर सकते हैं कि दिन के दौरान सर्वर पर किसी विशेष Transact -SQL कमांड को कितनी बार निष्पादित किया गया है।

प्रोफाइलर के साथ काम करना बहुत आसान लगता है। इस एप्लिकेशन को मेनू से लॉन्च किया जा सकता है शुरू| कार्यक्रमों| माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005 | प्रदर्शन उपकरण | SQL सर्वर प्रोफाइलर ... आरंभ करने के लिए, मेनू में खुली हुई प्रोफाइलर विंडो में फ़ाइल(फ़ाइल) आपको चयन करने की आवश्यकता है नयानिशान(नया ट्रेस) और SQL सर्वर 2005 सर्वर से कनेक्ट करें जिसकी आप निगरानी करेंगे। ट्रेसिंग एक सत्र को संदर्भित करता है जो SQL सर्वर 2005 के संचालन के बारे में जानकारी एकत्र करता है। हालाँकि, इससे पहले कि आप जानकारी एकत्र करना शुरू करें, आपको इस सत्र के मापदंडों को कॉन्फ़िगर करने की आवश्यकता है। यह सेटिंग विंडो में की जाती है निशानगुण(ट्रेस गुण), जो ट्रेस सत्र शुरू करने से पहले स्वचालित रूप से खुलता है (चित्र 11.1)।

चावल। ११.१.ट्रेस सत्र पैरामीटर सेट करना

टैब में आम(सामान्य) सूचीबद्ध उपयोगNSटेम्पलेट(टेम्पलेट का प्रयोग करें) आप अपने सत्र में जानकारी एकत्र करने के लिए सबसे उपयुक्त टेम्पलेट चुन सकते हैं। सिद्धांत रूप में, आप टेम्पलेट सेटिंग्स पर ध्यान नहीं दे सकते हैं, लेकिन जानकारी एकत्र करने के लिए मापदंडों को मैन्युअल रूप से परिभाषित कर सकते हैं (आसन्न टैब का उपयोग करके आयोजनचयन(घटना चयन))। हालांकि, सही टेम्पलेट निर्दिष्ट करने से समय की बचत हो सकती है और गलतियों से बचा जा सकता है। इसलिए, आइए टेम्प्लेट पर अधिक विस्तार से ध्यान दें।

टेम्प्लेट एक्सटेंशन के साथ एक विशेष फ़ाइल में सहेजा जाता है टीडीएफट्रेस सत्र सेटिंग्स। टेम्प्लेट के साथ काम करना (नए जोड़ना, मौजूदा बदलना, अन्य निर्देशिकाओं में रिपोर्ट आयात और निर्यात करना) मेनू का उपयोग करके किया जाता है फ़ाइल| टेम्पलेट्स(फाइल | टेम्प्लेट) SQL सर्वर प्रोफाइलर में। प्रारंभ में, आपके पास अपने निपटान में आठ टेम्पलेट हैं:

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

क्यू सपा _गिनता- निष्पादन के लिए शुरू की गई संग्रहीत प्रक्रियाओं और कार्यों के बारे में जानकारी एकत्र की जाती है। इस मामले में, प्रोफाइलर विंडो में जानकारी संग्रहीत प्रक्रियाओं के नाम से (प्रोफाइलर की शब्दावली में - समूहीकृत) सॉर्ट की जाती है;

क्यू टीएसक्यूएल- सर्वर पर निष्पादन के लिए लॉन्च किए गए सभी ट्रांजैक्ट -एसक्यूएल कमांड के बारे में जानकारी एकत्र की जाती है। कमांड कोड के अलावा, उपयोगकर्ता प्रक्रियाओं के पहचानकर्ताओं और प्रारंभ समय के बारे में जानकारी भी दर्ज की जाती है। आम तौर पर इस टेम्पलेट का उपयोग किसी एप्लिकेशन द्वारा सर्वर को भेजे गए आदेशों की निगरानी के लिए किया जाता है;

क्यू टीएसक्यूएल _अवधि- लगभग पिछले टेम्पलेट के समान, लेकिन उस समय के बारे में जानकारी रिकॉर्ड करने के बजाय जब ट्रांजैक्ट -एसक्यूएल कमांड चलाया गया था, इसे निष्पादित करने में लगने वाला समय रिकॉर्ड किया गया है। आमतौर पर इस टेम्पलेट का उपयोग सर्वर के प्रदर्शन को मैन्युअल रूप से मॉनिटर करने के लिए किया जाता है;

क्यू टीएसक्यूएल _समूहीकृत- Transact -SQL कमांड कोड और इसके लॉन्च के समय के बारे में जानकारी के अलावा, एप्लिकेशन नाम, ऑपरेटिंग सिस्टम में उपयोगकर्ता खाता और कनेक्ट करने के लिए उपयोग किए जाने वाले उपयोगकर्ता नाम के बारे में जानकारी दर्ज की जाती है। इस मामले में, रिकॉर्ड्स को लॉगिन द्वारा समूहीकृत किया जाता है। आमतौर पर इस पैटर्न का उपयोग उन स्थितियों में किया जाता है जहां आप किसी विशिष्ट एप्लिकेशन की गतिविधि को ट्रैक करना चाहते हैं;

क्यू टीएसक्यूएल _फिर से खेलना- निष्पादित Transact -SQL कमांड के बारे में सबसे विस्तृत जानकारी दर्ज की जाएगी। फिर इस जानकारी का उपयोग सर्वर पर अधिकतम सटीकता के साथ लोड को पुन: उत्पन्न करने के लिए किया जा सकता है। आमतौर पर, इस टेम्पलेट का उपयोग कमांड के एक सेट को लिखने के लिए किया जाता है जिसका उपयोग प्रदर्शन के दृष्टिकोण से विभिन्न सर्वर सेटिंग्स का परीक्षण करने के लिए किया जाएगा;

क्यू टीएसक्यूएल _एस.पी.- संपूर्ण संग्रहीत प्रक्रिया (घटना) की शुरुआत के बारे में जानकारी दर्ज करने के अलावा एसपी: शुरू), यह ट्रेस विकल्प इस संग्रहीत कार्यविधि में प्रत्येक कमांड के निष्पादन के बारे में जानकारी भी रिकॉर्ड करता है (event एसपी: StmtStarting) यह पैटर्न आमतौर पर जटिल संग्रहीत कार्यविधियों के संचालन की निगरानी के लिए उपयोग किया जाता है;

क्यू ट्यूनिंग- यह टेम्प्लेट डेटाबेस ट्यूनिंग सलाहकार के प्रसारण के लिए सबसे उपयुक्त जानकारी रिकॉर्ड करने के लिए डिज़ाइन किया गया है। इस स्वचालित विश्लेषण और प्रदर्शन अनुकूलन उपकरण के साथ कैसे काम करें, इस पर चर्चा की जाएगी संप्रदाय 11.5.5.

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

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

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

आपके द्वारा वांछित टेम्पलेट का चयन करने या लॉगिंग के लिए ईवेंट के अपने स्वयं के सेट को कॉन्फ़िगर करने के बाद, आपको बस टैब पर वापस जाने की आवश्यकता है आमऔर ट्रेस सत्र के लिए कुछ अतिरिक्त पैरामीटर कॉन्फ़िगर करें।

ट्रेस जानकारी को एक फ़ाइल में लॉग किया जा सकता है। इस फ़ाइल का उपयोग विभिन्न स्थितियों में किया जा सकता है:

q डेटाबेस ट्यूनिंग सलाहकार को सूचना के स्रोत के रूप में पारित किया जा सकता है;

q को सभी रिकॉर्ड किए गए आदेशों को दोहराकर प्रोफाइलर में बार-बार "खेला" जा सकता है, उदाहरण के लिए, विभिन्न सर्वर सेटिंग्स के तहत प्रदर्शन का मूल्यांकन करने के लिए;

क्यू डेवलपर्स को आवेदन के लिए उनके दावों के समर्थन में प्रस्तुत किया जा सकता है।

आइए कुछ बिंदुओं पर ध्यान दें जो किसी फ़ाइल में ट्रेस सत्र को लॉग करने से संबंधित हैं:

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

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

ट्रेस जानकारी लिखने का एक अन्य विकल्प SQL सर्वर तालिका में लिखना है। कॉलम के आवश्यक सेट वाली तालिका स्वचालित रूप से बनाई जाएगी। आप केवल इस तालिका में प्रविष्टियों की अधिकतम संख्या को अनुकूलित कर सकते हैं। कृपया ध्यान दें कि इस टैब पर, रिकॉर्ड की अधिकतम संख्या हजारों में इंगित की गई है।

टैब पर अंतिम पैरामीटर आम- सक्षमनिशानविरामसमय(ट्रेस स्टॉप टाइम शामिल करें)। आप उस समय को निर्दिष्ट कर सकते हैं जब ट्रेसिंग स्वचालित रूप से अक्षम हो जाएगी। किसी भी सेवा संचालन को शुरू करने से पहले ट्रेसिंग को बंद करना आमतौर पर समझ में आता है, जिसमें आप लॉगिंग बिंदु (बैकअप, बल्क डेटा लोडिंग, OLAP क्यूब्स को संसाधित करना, आदि) से रुचि नहीं रखते हैं।

सभी ट्रेसिंग मापदंडों को कॉन्फ़िगर करने के बाद, आप बटन पर क्लिक कर सकते हैं Daud(भागो) टैब आमऔर अनुरेखण प्रारंभ करें (चित्र 11.2)।

चावल। ११.२.ट्रेस सत्र के दौरान जानकारी देखना

ट्रेस सूचना दर्शक में काम काफी स्पष्ट है: ऊपरी भाग सर्वर पर होने वाली घटनाओं को दिखाता है, और निचला भाग उनके लिए विस्तृत जानकारी प्रदान करता है (उदाहरण के लिए, SQL कमांड का कोड)। आइए इस विंडो में उपलब्ध कुछ संभावनाओं पर ध्यान दें:

क्यू अगर टैब व्यवस्थितकॉलमटेम्पलेट के गुणों में आपने समूहीकृत किए जाने वाले स्तंभों का चयन किया है, फिर आप इन स्तंभों के आधार पर व्यूअर में रिकॉर्ड को समूहीकृत कर सकते हैं. इस उद्देश्य के लिए मेनू में राय(देखें) कमांड प्रदान की जाती है समूहीकृतराय(समूहीकृत दृश्य);

क्यू अगर एक ही टैब पर टेम्पलेट के गुणों में सूची के लिए समूहकेवल एक कॉलम रखा गया है, तो आप और भी सुविधाजनक प्रदर्शन मोड का उपयोग कर सकते हैं एकत्रित कियाराय(अंजीर.11.3)। यह मोड कमांड का उपयोग करके सक्षम किया गया है एकत्रित कियारायएक ही मेनू से रायऔर आपको अपनी पसंद के कॉलम से मानों को ट्री नोड्स में बदलने की अनुमति देता है जिसे आप ढह सकते हैं और विस्तारित कर सकते हैं। इसके अलावा, इनमें से प्रत्येक नोड के लिए घटनाओं की संख्या की स्वचालित रूप से गणना की जाती है।

चावल। ११.३.प्रदर्शन प्रणाली एकत्रित कियाराय

q प्रोफाइलर में, आप न केवल उन घटनाओं को प्रदर्शित कर सकते हैं जो अभी पकड़ी गई हैं, बल्कि सहेजी गई फाइलें और ट्रेस टेबल भी हैं। वैकल्पिक रूप से, आप Transact -SQL कमांड के साथ नियमित SQL सर्वर स्क्रिप्ट खोल सकते हैं। इन फ़ाइलों या तालिकाओं की जानकारी का उपयोग लॉग किए गए कार्यों को दोहराने के लिए किया जा सकता है। मेनू आदेश इस उद्देश्य के लिए अभिप्रेत हैं। फिर से खेलना(दोहराना);

q SQL सर्वर 2005 Profiler प्रदर्शन मॉनिटर में प्रदर्शन काउंटर के साथ ट्रेस जानकारी को संबद्ध करने के लिए एक नई सुविधा का परिचय देता है। इस अवसर का लाभ उठाने के लिए, आपको चाहिए:

ट्रेस सत्र को परिभाषित करें जिसके दौरान कॉलम के लिए जानकारी दर्ज की जानी चाहिए समय शुरूतथा अंतिम समय;

किसी फ़ाइल या तालिका में सूचना रिकॉर्डिंग के साथ ट्रेस सत्र प्रारंभ करें। इसके साथ ही, प्रदर्शन मॉनिटर मीटर रीडिंग को एक फ़ाइल में एकत्रित करें;

प्रोफाइलर में ट्रेस फ़ाइल से एकत्रित जानकारी खोलें, और फिर कमांड का उपयोग करें आयातप्रदर्शनआंकड़े(आयात प्रदर्शन डेटा) मेनू से फ़ाइल.

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

ट्रेस संग्रहीत कार्यविधियाँ एक प्रोफाइलर की तुलना में काम करने के लिए अधिक कठिन और कम सुविधाजनक होती हैं, और वे अतिरिक्त सुविधाएँ प्रदान नहीं करती हैं। इसलिए, हम उन पर विस्तार से विचार नहीं करेंगे। संक्षिप्त विवरण के साथ ऐसी संग्रहीत प्रक्रियाओं की एक सूची यहां दी गई है:

क्यू sp_trace_create- आपको ट्रेसिंग सत्र के मापदंडों को कॉन्फ़िगर करने की अनुमति देता है;

क्यू sp_trace_setevent- आपको बनाए गए ट्रेस सत्र के लिए आवश्यक घटनाओं का चयन करने की अनुमति देता है;

क्यू sp_trace_setfilter- आपको ट्रेस जानकारी एकत्र करने के लिए फ़िल्टर कॉन्फ़िगर करने की अनुमति देता है;

क्यू sp_trace_setstatus- आपको एक ट्रेस शुरू करने, इसे रोकने या संग्रहीत प्रक्रिया द्वारा बनाए गए ट्रेस को हटाने की अनुमति देता है sp_trace_createवर्तमान सत्र परिभाषा;

क्यू sp_trace_generateevent- आपको एक कस्टम ईवेंट उत्पन्न करने की अनुमति देता है जिसे ट्रेस के दौरान इंटरसेप्ट किया जाएगा।

इस लेख में मेलिंग सूची में प्रकाशित कई सामग्रियां हैं "एमएस एसक्यूएल सर्वर एक नाजुक मामला है ..." और एमएस एसक्यूएल सर्वर की प्रभावशीलता की निगरानी की समस्याओं, हार्डवेयर समस्याओं के कारणों का पता लगाने के तरीके और उनके समाधान के लिए समर्पित है। इसके अलावा, आपके ध्यान में कई उपयोगी, व्यावहारिक सिफारिशें और चेतावनियां पेश की जाएंगी।

यदि आपका डेटाबेस सर्वर I / O का गहनता से उपयोग कर रहा है, तो आप ऑपरेटिंग सिस्टम की I / O पेज लॉक लिमिट सेटिंग को बदल सकते हैं, जो ऑपरेटिंग सिस्टम की प्रभावी रीड / राइट दर को हार्ड डिस्क तक बढ़ा सकता है।
सबसे पहले, अपने विशिष्ट सर्वर लोड के लिए I / O बेंचमार्क करें। फिर, regedit.exe में, कुंजी खोलें:

एचकेएलएम \ सिस्टम \ CurrentControlSet \ Control \ सत्र प्रबंधक \ मेमोरी प्रबंधन \ IoPageLockLimit

आपके कार्यों का उद्देश्य बेंचमार्किंग परिणामों में परिवर्तन के संदर्भ में इस कुंजी के मूल्यों का चरण-दर-चरण चयन सबसे इष्टतम मूल्य तक करना है।
इस कुंजी में, ऑपरेटिंग सिस्टम बाइट्स की अधिकतम संख्या पढ़ता है जिसका उपयोग वह I / O संचालन के लिए कर सकता है। डिफ़ॉल्ट 0 है, जो 512KB से मेल खाती है। इस मान को चरणों में बढ़ाएं, हर बार 512KB जोड़कर (उदाहरण के लिए: "512", "1024", आदि), और प्रत्येक परिवर्तन के बाद अपने सिस्टम को बेंचमार्क करें। जब तक आप I / O संचालन के थ्रूपुट में वृद्धि का निरीक्षण करते हैं, तब तक इस पैरामीटर को बढ़ाने के लिए समझ में आता है, जो मानक डिस्क संचालन पर खर्च किए गए समय में कमी में प्रकट हो सकता है। जब आप महत्वपूर्ण सुधार देखना बंद कर दें, तो रजिस्ट्री संपादक पर वापस लौटें और अंतिम वेतन वृद्धि को हटा दें।

चेतावनी: इस कुंजी के मान के अधिकतम आकार की एक सीमा है। यदि आपके पास 16 MB RAM है, तो IoPageLockLimit को 2048 बाइट्स से अधिक सेट न करें; 32MB RAM के लिए, 4096 बाइट्स से अधिक न हो, इत्यादि।

महत्वपूर्ण लेख:

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

इसे साझा करें