उत्पादन में है कि एक डेटाबेस पर SQL Profiler का उपयोग करना


28

एक डेवलपर के रूप में, मैं काफी बार SQL Profiler का उपयोग करता हूं। यह एक अच्छा डिबगिंग टूल है, दोनों यह ट्रैक करने के लिए कि मेरा कोड क्या कर रहा है और प्रदर्शन समस्याओं का विश्लेषण करने के लिए।

लेकिन मैंने हमेशा इसे अपने विकास के माहौल पर, और बहुत नियंत्रित तरीके से उपयोग किया है।

  • मेरा आवेदन शुरू करें, और इसे एक विशिष्ट स्थिति में लाएं
  • प्रोफाइलर पर एक निशान शुरू करें
  • मेरे आवेदन पर कार्रवाई का एक विशिष्ट अनुक्रम करें
  • ट्रेस रोकें और परिणामों की जांच करें।

क्या SQL Profiler व्यावहारिक रूप से इन-प्रोडक्शन परिवेश में उपयोग किया जा सकता है?

मेरी पहली चिंता यह है कि यह प्रदर्शन को नीचा दिखाएगा।

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

क्या कोई उत्पादन में SQL Profiler का उपयोग करता है?


1
यदि आप जानते हैं कि आप क्या देख रहे हैं, तो आपको अनुरेखण की आवश्यकता भी नहीं हो सकती है, जैसे dba.stackexchange.com/questions/756/…
Gaius

जवाबों:


19

उत्पादन सर्वर का पता लगाने के लिए Sql Server Profiler (GUI टूल) का उपयोग करना एक अच्छा विचार नहीं है। लेकिन यह लोड पर निर्भर करता है। इसके बजाय सर्वर-साइड sql अनुरेखण ( sp_trace_XXX प्रक्रियाओं को देखें ) का उपयोग करें। इसके अलावा मुझे लेख मिले हैं:

प्रदर्शन प्रभाव: प्रॉसेसर ट्रेसिंग बनाम सर्वर साइड SQL ट्रेसिंग ,

SQL सर्वर में सर्वर साइड ट्रेसिंग को स्वचालित करना

प्रोफाइलर के साथ समस्याओं से बचें

शायद यह दिलचस्पी और उपयोगी होगा।

पुस्तक ऑनलाइन कहती है:

  • प्रॉसेसर को सीधे सर्वर पर चलाने के बजाय रिमोट से चलाएं
  • अक्सर होने वाली घटनाओं से बचें (जैसे कि लॉक: एक्वायर्ड) जब तक बिल्कुल ज़रूरत न हो
  • केवल आवश्यक घटनाओं को शामिल करें
  • घटनाओं की संख्या को कम करने के लिए फिल्टर सीमित करें
  • अनावश्यक डेटा से बचें (जैसे SQL: BatchStarting और SQL: BatchCompleted)
  • Profiler के साथ बड़े निशान चलाने से बचें; इसके बजाय सर्वर-साइड SQL ट्रेस पर विचार करें
  • सर्वर-साइड ट्रेस फ़ाइल का आकार सीमित करें और अंतरिक्ष उपयोग का प्रबंधन करें

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

21

मैं हर समय उत्पादन के खिलाफ SQL Profiler का उपयोग करता हूं। जब सही ढंग से किया जाता है (ताकि आप एक बहुत कम मात्रा में डेटा वापस पा सकें) एक सर्वर के खिलाफ जोखिम कम से कम है। सब कुछ नीचे ट्रेस करना बेकार होगा।


7
  1. हां, निगरानी के कार्य के लिए कुछ संसाधनों की आवश्यकता होगी। इसे एक ओवरलोड सर्वर पर चलाने से यह मार सकता है।

  2. आप वास्तव में वास्तविक जीवन भार की निगरानी करेंगे: आपके कार्य इस भार के शोर में खो सकते हैं।

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

कुंजी यह जानना है कि आप क्या देख रहे हैं: हम इसे छोड़ना नहीं चाहते हैं और सब कुछ फंस गया है।

इस मामले में, यदि आप कुछ कार्यों के परिणाम देखना चाहते हैं, तो क्या आप इसे घंटों से बाहर कर सकते हैं?


2

Profiler हमेशा एक प्रदर्शन प्रभाव पेश करेगा।

यदि आप SQL Server 2008R2 + का उपयोग कर रहे हैं, तो आप विस्तारित घटनाओं का उपयोग कर सकते हैं। यह आपको प्रोफाइल के प्रदर्शन के एक अंश के साथ प्रोफाइलर में देखी गई अधिकांश जानकारी प्रदान करता है।

पुस्तकें ऑनलाइन परिचय http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx

इस सुविधा को SQL Server 2012 में एक बड़ा अपडेट मिला जिसमें अब SSMS में एक GUI शामिल है।

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