मैं क्वेरी प्रदर्शन को सबसे अच्छा कैसे माप सकता हूं?


19

मेरे पास 2 संग्रहीत प्रक्रियाएं हैं, जहां दूसरी संग्रहीत प्रक्रिया पहले एक का सुधार है।

मैं ठीक से मापने की कोशिश कर रहा हूं कि यह कितना सुधार है।

1 / मापने के clock timeरूप में मैं एक विकल्प के रूप में मुझे लगता है कि अलग निष्पादन समय नहीं लगता है। इससे भी बदतर, कभी-कभी (शायद ही कभी, लेकिन ऐसा होता है) दूसरी संग्रहीत प्रक्रिया का निष्पादन समय पहली प्रक्रिया के निष्पादन समय से बड़ा है (मुझे लगता है कि उस समय सर्वर कार्यभार के कारण)।

2 / Include client statisticsभी अलग परिणाम प्रदान करता है।

3 / DBCC DROPCLEANBUFFERS, DBCC FREEPROCCACHEअच्छे हैं, लेकिन एक ही कहानी ...

4 / SET STATISTICS IO ONएक विकल्प हो सकता है, लेकिन मैं एक समग्र स्कोर कैसे प्राप्त कर सकता हूं क्योंकि मेरे पास मेरी संग्रहीत प्रक्रियाओं में शामिल कई टेबल हैं?

5 / Include actual execution planभी एक विकल्प हो सकता है। मुझे estimated subtreecostपहले संग्रहीत प्रक्रिया के लिए 0.3253, और दूसरे के लिए 0.3079 मिलता है। क्या मैं कह सकता हूं कि दूसरी संग्रहीत प्रक्रिया 6% तेज (= 0.3253 / 0.3079) है?

6 / SQL सर्वर प्रोफाइलर से "रीड्स" फ़ील्ड का उपयोग करना?

तो मैं कैसे कह सकता हूं कि दूसरी संग्रहीत प्रक्रिया पहली प्रक्रिया की तुलना में x% तेज है, कोई भी निष्पादन स्थिति (सर्वर का कार्यभार, सर्वर जहां इन संग्रहीत प्रक्रियाओं को निष्पादित किया जाता है, आदि) से कोई फर्क नहीं पड़ता?

यदि यह संभव नहीं है, तो मैं कैसे साबित कर सकता हूं कि दूसरी संग्रहीत प्रक्रिया पहले संग्रहीत प्रक्रिया की तुलना में बेहतर निष्पादन समय है?

जवाबों:


17

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

उदाहरण के लिए, आप प्रत्येक संग्रहीत कार्यविधि को 100 बार निष्पादित कर सकते हैं, और फिर अपने सुधारों का बैकअप लेने के लिए आँकड़ों का उपयोग कर सकते हैं। "100 से अधिक निष्पादन, मेरे सुधार कुल 30 सेकंड बचाते हैं और संग्रहीत खरीद प्रति निष्पादन 1500 कम पढ़ता है।" मुझे लगता है कि आपको विचार समझ आ गया है।

यदि संग्रहीत खरीद में पैरामीटर हैं, तो हमेशा यह देखना एक अच्छा विचार है कि आपके सुधार मापदंडों के कई अलग-अलग सेटों के साथ काम करते हैं। SQLQueryStress कुछ शांत सामग्री देता है जिसमें आप अपनी क्वेरी में स्थानापन्न पैरामीटर दे सकते हैं कि संग्रहित खरीद प्रदर्शन कैसे हो सकता है की एक बेहतर समग्र तस्वीर प्राप्त करने के लिए।

SQLQueryStress प्रलेखन: http://www.datamanipulation.net/sqlquerystress/documentation/documentation.asp

SQLQueryStress


6

4 / आप समग्र स्कोर देखने के लिए http://statisticsioparser.com/statisticsioparser/ पर जा सकते हैं और अपने आँकड़े चिपका सकते हैं ।


तार्किक पढ़ता है: 3101 बनाम 2943। पढ़ें-आगे पढ़ें: 0 बनाम 8. स्कैन गणना: 637 समग्र। भौतिक पढ़ता है: 0 कुल मिलाकर। एलओबी लॉजिकल रीड्स: कुल मिलाकर 156।
मिहाई बेजेनारीयू

3

जब आपने अपनी दो संग्रहीत प्रक्रियाओं के लिए कुछ दिनों के लिए निष्पादन समय एकत्र किया है, तो मैं आपको इस मुखपृष्ठ का उपयोग करने की सलाह दूंगा

http://www.evanmiller.org/ab-testing/t-test.html

यह देखने के लिए कि क्या वे वास्तव में अलग हैं।

6% अंतर ध्वनि नहीं है, जब यह संग्रहीत प्रक्रियाओं के सुधार की बात आती है। मैं अपने सहकर्मी से परिमाण के दो आदेशों की उम्मीद करने के लिए आया हूं, और मैं निराश होने का नाटक करता हूं यदि वह केवल परिमाण के एक आदेश को प्राप्त करता है ...

उसे यह साबित करने के लिए इवानमिलर होमपेज का उपयोग करने की आवश्यकता नहीं है कि उसका समाधान तेजी से काम करता है।

मैं SQLSentrys भी स्थापित करूंगा (संपादित करें :) http://www.sqlsentry.com/ से प्लान एक्सप्लोरर क्योंकि निष्पादन योजनाओं की तुलना करने के लिए यह एक बहुत बेहतर उपकरण है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.