2010-07-08 14 views
42

मैं एक SQLite डेटाबेस का उपयोग कर रहा हूं और इंडेक्स के साथ या पूरी तरह से पुनर्गठन करके, मेरे प्रश्नों को तेज़ करना चाहता हूं।क्या sqlite क्वेरी प्रोफाइल करने के लिए कोई उपकरण है?

क्या प्रोफ़ाइल प्रश्नों के लिए कोई उपकरण है, जो मुझे यह तय करने में मदद कर सकता है कि चीजें कहां धीमी हो रही हैं?

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

+0

+1। मुझे उनमें से एक भी चाहिए। जाहिर है आप यहां पूछने से पहले गुगल हो गए हैं, इसलिए इसकी संभावना नहीं हो सकती है। क्या आपने सोर्सफॉर्ज और फ्रेशमीट पर भी जांच की? – Mawg

+1

'sqlite प्रोफाइल' उपज के लिए Google पर एक खोज: http://katastrophos.net/andre/blog/2007/01/04/sqlite-simple-timing-profiler-patch/ लेकिन यह स्क्लाइट शैल के लिए एक पैच है, जिसे मैं टालना पसंद करूंगा, और मुझे नहीं लगता कि यह वही करता है जो मैं चाहता हूं।Sourceforge/FM ने ब्याज की कोई चीज़ नहीं दी (न कि मैंने मूल प्रश्न पूछने से पहले वहां जांच की थी)। – bryn

उत्तर

20

आपके यहां यहां प्रश्नों का मिश्रण है। यह देखने के लिए कि कौन से प्रश्न चलते हैं और प्रत्येक कब तक लेता है, आपको या तो sqlite3.dll को संशोधित करने की आवश्यकता होगी यदि कोई एप्लिकेशन उस से लिंक हो रहा है या यदि यह आपका स्वयं का एप्लिकेशन है तो आप इसे अपने कोड में आसानी से लिख सकते हैं (हम यह सब करते हैं प्रश्न, लेनदेन, समय, आदि)।

व्यक्तिगत क्वेरी विश्लेषण के लिए, आप EXPLAIN का उपयोग कर सकते हैं। यह आपको किसी प्रश्न के भीतर अलग-अलग चरणों का समय नहीं बताएगा लेकिन यह आपको बताएगा कि क्वेरी कैसे निष्पादित की गई थी।

http://www.sqlite.org/lang_explain.html

एक SQL विवरण कीवर्ड "व्याख्या" द्वारा या वाक्यांश से पहले किया जा सकता है "QUERY योजना व्याख्या"। या तो संशोधन SQL कथन को क्वेरी के रूप में व्यवहार करने का कारण बनता है और EXPLAIN कीवर्ड या वाक्यांश छोड़ा गया था, तो SQL कथन का संचालन कैसे किया जाएगा, इस बारे में जानकारी वापस करने के लिए।

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

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

+0

मैं इस जवाब को स्वीकार करूंगा हालांकि यह वह जवाब नहीं है जिसे मैं सुनना चाहता था। मैं नौकरी के लिए थोड़ा अधिक उच्च स्तर के उपकरण की उम्मीद कर रहा था। – bryn

+1

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

32

यह केवल प्रश्न के एक हिस्से का जवाब देगा (दुर्भाग्य से सबसे अनुपयोगी हिस्सा)।

मैंने इसे गॉगल किया क्योंकि मैं कुछ समय के लिए पूछताछ की तलाश कर रहा था और sqlite3 क्लाइंट में टाइमर मेटा कमांड है।

SQLite>

पर में वहाँ से

पर .timer, सभी क्वेरी परिणाम संलग्न cpu टाइमर आँकड़े होंगे। उम्मीद है कि यह कम से कम थोड़ा सा मदद करता है।

+6

+1 हालांकि यह सवाल का जवाब नहीं देता है, मैं शर्त लगाता हूं कि इस पृष्ठ पर आने वाले 50% लोग – tjb

+1

की तलाश में हैं, यह निश्चित रूप से मैं यहां आया था; धन्यवाद! –

2

अब SQLite प्रयोगात्मक sqlite3_trace और sqlite3_profile है (विवरण के लिए https://www.sqlite.org/c3ref/profile.html देखें)। वे लंबे परीक्षण के दौरान आंकड़े/जांच अपराधी होने के लिए काम में आ सकते हैं। एक अच्छे प्रश्न के लिए

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