2009-09-22 14 views
9

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

अग्रिम धन्यवाद।

इस लेख पर

उत्तर

17

देखो: Measuring SQL Performance

आप नि: शुल्क खाता रजिस्टर करने के लिए यहाँ नहीं करना चाहते हैं है एक समाधान 1:

DECLARE @start datetime, @stop datetime 
SET @start = GETDATE() 
EXEC your_sp 
SET @stop = GETDATE() 

2:

SET STATISTICS TIME ON 
EXEC your_sp 

3:

SET STATISTICS IO ON 
EXEC your_sp 

बीटीडब्ल्यू, इस साइट में कुछ अच्छे लेख हैं। मैं पंजीकरण करने की सिफारिश करता हूं। यह निःशुल्क है।

+4

पंजीकरण आवश्यक है। –

+0

हाँ, मैं भूल गया। मैंने अब अपना जवाब सही कर दिया। –

+5

पहला विकल्प _PRINT 'Took:' + CONVERT (वर्कर (20), डेटीफ (एमएस, @ स्टार्ट, @ स्टॉप)/1000.0) को भूलना न भूलें) + 'सेकंड'_ –

1

सवाल यह है कि आप किसके लिए अनुकूलित कर रहे हैं? क्या यह गति या संसाधनों के लिए उपयोग किया जाता है?

यदि गति है, तो क्वेरी विश्लेषक में मैं कई रनों के बीच निष्पादन को देखता हूं, परिवर्तन करता हूं और उन्हें फिर से समय देता हूं।

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

0

अधिकांश प्रश्नों की तरह, उत्तर निर्भर करता है ... अंतिम विश्लेषण में, केवल एकमात्र उपाय जो अंत उपयोगकर्ता की धारणा है, जो कई चीजों से प्रभावित हो सकता है, न केवल संग्रहीत प्रक्रिया, बल्कि नेटवर्क प्रदर्शन, उपयोग सहित पैटर्न (एसपीआरओ को 20x/दिन, या 1000x/सेकेंड कहा जाता है?), - और एसप्रोक निर्धारण कारक नहीं हो सकता है।

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

0

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

आप क्वेरी विश्लेषक में हाथ से संग्रहीत प्रक्रिया को हमेशा चला सकते हैं और परिणामों को माप सकते हैं। .NET harness सिर्फ आपके लिए प्रक्रिया को स्वचालित करता है।

0

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

1

आप EXE YourProcedureName

साथ पंक्ति के लिए TotalSubtreeCost स्तंभ मान पर पर

देखो की तरह

सेट SHOWPLAN_ALL कुछ प्रयोग कर रहे हैं इस मदद कर सकता है:

http://technet.microsoft.com/en-us/library/ms180765.aspx

0

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

+0

यह भी सुनिश्चित करें कि प्रत्येक ब्लॉक को सेट करें और चलाएं। यह आपको बताएगा कि प्रत्येक आईओ कितना उपभोग कर रहा है। –

संबंधित मुद्दे