डाटाबेस एक्सेस इंस्ट्रूमेंटिंग

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

क्या यह बस प्रत्येक डेटाबेस कॉल में टाइमर समेत और परिणाम लॉगिंग करने का मामला है, या क्या ऐसा करने का 'neater' तरीका है? हो सकता है कि एक ढांचा है जो आपके लिए पहले से ही करता है, या कोई ध्वज है जिसे मैं सक्षम कर सकता हूं उदा। लिंक-टू-एसक्यूएल जो समान कार्यक्षमता प्रदान करेगा।

मैं मुख्य रूप से सी # का उपयोग करता हूं लेकिन विभिन्न भाषाओं के तरीकों को देखने में भी दिलचस्पी लेता हूं, और एसक्यूएल प्रोफाइलर जैसे डीबी प्लेटफॉर्म विधि पर ऐसा करने के लिए मुझे 'कोड' तरीके से अधिक दिलचस्पी होगी।

0
ro fr bn

7 उत्तर

अगर आप फायरबर्ड में हैं तो आप sinatica.com देखना चाहेंगे।
हम जल्द ही फायरबर्ड डीबीए के लिए एक वास्तविक समय निगरानी उपकरण लॉन्च करेंगे।

< /shameless plug>

0
जोड़ा

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

0
जोड़ा

मैंने सोचा होगा कि यहां पूछने की महत्वपूर्ण बात यह है कि "आप किस डेटाबेस प्लेटफ़ॉर्म का उपयोग कर रहे हैं?"

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

0
जोड़ा

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

यदि आप MySQL या Postgre का उपयोग कर रहे हैं तो वास्तविक समय में क्वेरी गतिविधि देखने के लिए कई टूल हैं, लेकिन मुझे समय के साथ क्वेरी प्रदर्शन को मापने के लिए एसक्यूएल प्रोफाइलर के रूप में अच्छा टूल नहीं मिला है।

मैं सोच रहा हूं कि क्या ELMAH के समान कुछ है (या होना चाहिए?) जिस तरह से यह सिर्फ प्लग इन करता है और आपको बिना अतिरिक्त प्रयास किए जानकारी देता है?

0
जोड़ा

डेटाबेस कॉल रिकॉर्डिंग, सकल समय और एप्लिकेशन में लौटाए गए रिकॉर्ड्स (बाइट्स) की संख्या उपयोगी है, लेकिन यह आपको आवश्यक सारी जानकारी नहीं देगी।

यह आपको उन उपयोग पैटर्न दिखा सकता है जिन्हें आप उम्मीद नहीं कर रहे थे। यह दिखा सकता है कि "सेट आधारित" संचालन के बजाय "पंक्ति-दर-पंक्ति" पहुंच का उपयोग कहां किया जा सकता है।

उपयोग करने का सबसे अच्छा टूल एसक्यूएल प्रोफाइलर है और सीपीयू और अवधि बनाम "रीड्स" की संख्या का विश्लेषण करता है। आप उच्च CPU प्रश्नों, उच्च पढ़ने और लंबी अवधि (duh!) से बचना चाहते हैं।

"ग्रुप बाय रीड्स" शीर्षस्थतम प्रश्नों को शीर्ष पर लाने के लिए एक उपयोगी सुविधा है।

0
जोड़ा

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

0
जोड़ा

यदि आप हाइबरनेट का उपयोग करते हैं (मैं जावा संस्करण का उपयोग करता हूं, तो मुझे लगता है कि एनएचबीर्नेट के पास कुछ समान है), आप हाइबरनेट को कई अलग-अलग चीजों के बारे में आंकड़े एकत्र कर सकते हैं। उदाहरण के लिए देखें:

http://www.javalobby.org/java/forums/t19807.html

0
जोड़ा