सटीक क्वेरी प्रदर्शन कैसे प्राप्त करें?


9

मैं एक संग्रहीत प्रक्रिया के प्रदर्शन को बेहतर बनाने का प्रयास कर रहा हूं। जब मैं एसपी को चलाता हूं, तो यह लगभग तुरंत खत्म हो जाता है, जैसे कि कुछ कैश किया गया था। मुझे SSMS में SP निष्पादित करने से पहले SQL की निम्न दो पंक्तियों का उपयोग करने के लिए कहा गया था:

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

जब मैं एसपी के ऊपर कोड की दो पंक्तियों के साथ एसपी को चलाता हूं तो लगभग 8 सेकंड में समाप्त होता है। हालांकि, क्या यह वास्तव में मुझे वास्तविक निष्पादन समय दे रहा है (जैसे कि मैं इसे किसी एप्लिकेशन से चलाता हूं)? मुझे कैसे पता चलेगा?


जवाबों:


9

वे आदेश दो काम करते हैं:

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

आपको मूल रूप से एक ऐसा समय मिल रहा है जो "सबसे खराब स्थिति" परिदृश्य के बराबर है - आपने बस सर्वर को रिबूट किया और कुछ भी स्मृति में नहीं है। बाद के रनों को डिस्क से डेटा खींचने के लिए लागत का भुगतान करने की आवश्यकता नहीं है क्योंकि उन पृष्ठों को पहले से ही मेमोरी में लोड किया गया है।

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

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

पर्दे के पीछे वास्तव में क्या हो रहा है, इसके बारे में अधिक जानकारी प्राप्त करने के लिए आप इन कमांड का उपयोग कर सकते हैं:

SET STATISTICS IO ON
SET STATISTICS TIME ON

ये आपको डिस्क (प्रति ऑब्जेक्ट) से पेज रीड्स, लॉजिकल पेज रीड्स, टाइम टू बिताए गए प्लान को कंप्लीट करने और किसी क्वेरी को निष्पादित करने में लगने वाले समय के बारे में विस्तृत जानकारी देंगे।


सामान्य जेएनके की तरह उत्कृष्ट जवाब।
OO

मदद करने के लिए खुश! आप बस उन चीजों के बारे में सवाल पूछ रहे हैं जो मैंने बहुत से निपटाए हैं। यदि आप प्रतिकृति या स्मृति प्रबंधन के बारे में पूछते हैं तो मेरे पास बहुत कुछ नहीं होगा :)
JNK

2
मैं सेट स्टैटिस्टिक्स IO ON के बारे में जानता था, लेकिन मैं SET स्टैटिस्टिक्स टाइम ऑन के बारे में कभी नहीं जानता था। धन्यवाद जेएनके
डेटागोड

2
सिर्फ FYI करें आप SQL सेंटरी प्लान एक्सप्लोरर का उपयोग करके वास्तविक योजनाओं को उत्पन्न करके सभी SET सेटिंग्स के बिना इस जानकारी को प्राप्त कर सकते हैं। और कई (कहते हैं, 5) रन बनाने के लिए आप बस GO 5SSMS की तरह बैच को समाप्त कर सकते हैं । यह एक मुफ्त डाउनलोड है, मैं आपको कुछ भी बेचने की कोशिश नहीं कर रहा हूं। sqlsentry.net/plan-explorer/sql-server-query-view.asp
हारून बर्ट्रेंड

1
@ जेएनके अच्छी तरह से, निश्चित रूप से, यह मुफ़्त है, यह समय बचाता है, और यह ऐसी जानकारी दिखाता है जो प्रबंधन स्टूडियो से बाहर निकलना असंभव या बहुत बोझिल है। और मैं वहां काम करता हूं। :-)
हारून बर्ट्रेंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.